17 #ifndef hifi_WebSocketClass_h
18 #define hifi_WebSocketClass_h
23 #include "ScriptValue.h"
91 Q_PROPERTY(QString binaryType READ getBinaryType WRITE setBinaryType)
92 Q_PROPERTY(ulong bufferedAmount READ getBufferedAmount)
93 Q_PROPERTY(QString extensions READ getExtensions)
95 Q_PROPERTY(
ScriptValue onclose READ getOnClose WRITE setOnClose)
96 Q_PROPERTY(
ScriptValue onerror READ getOnError WRITE setOnError)
97 Q_PROPERTY(
ScriptValue onmessage READ getOnMessage WRITE setOnMessage)
98 Q_PROPERTY(
ScriptValue onopen READ getOnOpen WRITE setOnOpen)
100 Q_PROPERTY(QString protocol READ getProtocol)
101 Q_PROPERTY(WebSocketClass::ReadyState readyState READ getReadyState)
102 Q_PROPERTY(QString url READ getURL)
104 Q_PROPERTY(WebSocketClass::ReadyState CONNECTING READ getConnecting CONSTANT)
105 Q_PROPERTY(WebSocketClass::ReadyState OPEN READ getOpen CONSTANT)
106 Q_PROPERTY(WebSocketClass::ReadyState CLOSING READ getClosing CONSTANT)
107 Q_PROPERTY(WebSocketClass::ReadyState CLOSED READ getClosed CONSTANT)
138 QWebSocket* getWebSocket() {
return _webSocket; }
140 ReadyState getConnecting()
const {
return CONNECTING; };
141 ReadyState getOpen()
const {
return OPEN; };
142 ReadyState getClosing()
const {
return CLOSING; };
143 ReadyState getClosed()
const {
return CLOSED; };
145 void setBinaryType(QString binaryType) { _binaryType = binaryType; }
146 QString getBinaryType() {
return _binaryType; }
149 QString getExtensions() {
return QString(); }
152 QString getProtocol() {
return QString(); }
154 ulong getBufferedAmount() {
return 0; }
156 QString getURL() {
return _webSocket->requestUrl().toDisplayString(); }
158 ReadyState getReadyState() {
159 switch (_webSocket->state()) {
160 case QAbstractSocket::SocketState::HostLookupState:
161 case QAbstractSocket::SocketState::ConnectingState:
163 case QAbstractSocket::SocketState::ConnectedState:
164 case QAbstractSocket::SocketState::BoundState:
165 case QAbstractSocket::SocketState::ListeningState:
167 case QAbstractSocket::SocketState::ClosingState:
169 case QAbstractSocket::SocketState::UnconnectedState:
175 void setOnClose(
const ScriptValue& eventFunction) { _onCloseEvent = eventFunction; }
178 void setOnError(
const ScriptValue& eventFunction) { _onErrorEvent = eventFunction; }
181 void setOnMessage(
const ScriptValue& eventFunction) { _onMessageEvent = eventFunction; }
182 ScriptValue getOnMessage() {
return _onMessageEvent; }
184 void setOnOpen(
const ScriptValue& eventFunction) { _onOpenEvent = eventFunction; }
227 void close(QWebSocketProtocol::CloseCode closeCode);
228 void close(QWebSocketProtocol::CloseCode closeCode, QString reason);
231 QWebSocket* _webSocket;
244 void handleOnClose();
245 void handleOnError(QAbstractSocket::SocketError error);
246 void handleOnMessage(
const QString& message);
247 void handleOnBinaryMessage(
const QByteArray& message);
252 Q_DECLARE_METATYPE(QWebSocketProtocol::CloseCode);
253 Q_DECLARE_METATYPE(WebSocketClass::ReadyState);
256 bool qWSCloseCodeFromScriptValue(
const ScriptValue&
object, QWebSocketProtocol::CloseCode& closeCode);
262 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:89