17 #ifndef hifi_WebSocketClass_h
18 #define hifi_WebSocketClass_h
23 #include "ScriptValue.h"
93 Q_PROPERTY(QString binaryType READ getBinaryType WRITE setBinaryType)
94 Q_PROPERTY(ulong bufferedAmount READ getBufferedAmount)
95 Q_PROPERTY(QString extensions READ getExtensions)
97 Q_PROPERTY(
ScriptValue onclose READ getOnClose WRITE setOnClose)
98 Q_PROPERTY(
ScriptValue onerror READ getOnError WRITE setOnError)
99 Q_PROPERTY(
ScriptValue onmessage READ getOnMessage WRITE setOnMessage)
100 Q_PROPERTY(
ScriptValue onopen READ getOnOpen WRITE setOnOpen)
102 Q_PROPERTY(QString protocol READ getProtocol)
103 Q_PROPERTY(WebSocketClass::ReadyState readyState READ getReadyState)
104 Q_PROPERTY(QString url READ getURL)
106 Q_PROPERTY(WebSocketClass::ReadyState CONNECTING READ getConnecting CONSTANT)
107 Q_PROPERTY(WebSocketClass::ReadyState OPEN READ getOpen CONSTANT)
108 Q_PROPERTY(WebSocketClass::ReadyState CLOSING READ getClosing CONSTANT)
109 Q_PROPERTY(WebSocketClass::ReadyState CLOSED READ getClosed CONSTANT)
140 QWebSocket* getWebSocket() {
return _webSocket; }
142 ReadyState getConnecting()
const {
return CONNECTING; };
143 ReadyState getOpen()
const {
return OPEN; };
144 ReadyState getClosing()
const {
return CLOSING; };
145 ReadyState getClosed()
const {
return CLOSED; };
147 void setBinaryType(QString binaryType) { _binaryType = binaryType; }
148 QString getBinaryType() {
return _binaryType; }
151 QString getExtensions() {
return QString(); }
154 QString getProtocol() {
return QString(); }
156 ulong getBufferedAmount() {
return 0; }
158 QString getURL() {
return _webSocket->requestUrl().toDisplayString(); }
160 ReadyState getReadyState() {
161 switch (_webSocket->state()) {
162 case QAbstractSocket::SocketState::HostLookupState:
163 case QAbstractSocket::SocketState::ConnectingState:
165 case QAbstractSocket::SocketState::ConnectedState:
166 case QAbstractSocket::SocketState::BoundState:
167 case QAbstractSocket::SocketState::ListeningState:
169 case QAbstractSocket::SocketState::ClosingState:
171 case QAbstractSocket::SocketState::UnconnectedState:
177 void setOnClose(
const ScriptValue& eventFunction) { _onCloseEvent = eventFunction; }
180 void setOnError(
const ScriptValue& eventFunction) { _onErrorEvent = eventFunction; }
183 void setOnMessage(
const ScriptValue& eventFunction) { _onMessageEvent = eventFunction; }
184 ScriptValue getOnMessage() {
return _onMessageEvent; }
186 void setOnOpen(
const ScriptValue& eventFunction) { _onOpenEvent = eventFunction; }
229 void close(QWebSocketProtocol::CloseCode closeCode);
230 void close(QWebSocketProtocol::CloseCode closeCode, QString reason);
233 QWebSocket* _webSocket;
246 void handleOnClose();
247 void handleOnError(QAbstractSocket::SocketError error);
248 void handleOnMessage(
const QString& message);
249 void handleOnBinaryMessage(
const QByteArray& message);
254 Q_DECLARE_METATYPE(QWebSocketProtocol::CloseCode);
255 Q_DECLARE_METATYPE(WebSocketClass::ReadyState);
258 bool qWSCloseCodeFromScriptValue(
const ScriptValue&
object, QWebSocketProtocol::CloseCode& closeCode);
264 bool wscReadyStateFromScriptValue(
const ScriptValue&
object, WebSocketClass::ReadyState& readyState);
[ScriptInterface] Provides an engine-independent interface for QScriptContext
Definition: ScriptContext.h:55
Provides an engine-independent interface for a scripting engine.
Definition: ScriptEngine.h:93
[ScriptInterface] Provides an engine-independent interface for QScriptValue
Definition: ScriptValue.h:40
Provides the WebSocket scripting interface.
Definition: WebSocketClass.h:91