mirror of
https://github.com/lubosz/overte.git
synced 2025-04-23 12:14:00 +02:00
Init push
This commit is contained in:
parent
6b5d1c6191
commit
b33ad80992
2 changed files with 27 additions and 1 deletions
|
@ -34,10 +34,11 @@ WebSocketClass::WebSocketClass(QScriptEngine* engine, QWebSocket* qWebSocket) :
|
|||
void WebSocketClass::initialize() {
|
||||
connect(_webSocket, &QWebSocket::disconnected, this, &WebSocketClass::handleOnClose);
|
||||
connect(_webSocket, &QWebSocket::textMessageReceived, this, &WebSocketClass::handleOnMessage);
|
||||
connect(_webSocket, &QWebSocket::binaryMessageReceived, this, &WebSocketClass::handleOnBinaryMessage);
|
||||
connect(_webSocket, &QWebSocket::connected, this, &WebSocketClass::handleOnOpen);
|
||||
connect(_webSocket, static_cast<void(QWebSocket::*)(QAbstractSocket::SocketError)>(&QWebSocket::error), this,
|
||||
&WebSocketClass::handleOnError);
|
||||
_binaryType = QStringLiteral("blob");
|
||||
_binaryType = QStringLiteral("arraybuffer");
|
||||
}
|
||||
|
||||
QScriptValue WebSocketClass::constructor(QScriptContext* context, QScriptEngine* engine) {
|
||||
|
@ -53,8 +54,13 @@ WebSocketClass::~WebSocketClass() {
|
|||
}
|
||||
|
||||
void WebSocketClass::send(QScriptValue message) {
|
||||
if (message.isObject()) {
|
||||
QByteArray ba = qscriptvalue_cast<QByteArray>(message);
|
||||
_webSocket->sendBinaryMessage(ba);
|
||||
} else {
|
||||
_webSocket->sendTextMessage(message.toString());
|
||||
}
|
||||
}
|
||||
|
||||
void WebSocketClass::close() {
|
||||
this->close(QWebSocketProtocol::CloseCodeNormal);
|
||||
|
@ -97,6 +103,25 @@ void WebSocketClass::handleOnMessage(const QString& message) {
|
|||
}
|
||||
}
|
||||
|
||||
void WebSocketClass::handleOnBinaryMessage(const QByteArray& message) {
|
||||
if (_onMessageEvent.isFunction()) {
|
||||
QScriptValueList args;
|
||||
QScriptValue arg = _engine->newObject();
|
||||
QScriptValue data = _engine->newVariant(QVariant::fromValue(message));
|
||||
QScriptValue ctor = _engine->globalObject().property("ArrayBuffer");
|
||||
ArrayBufferClass* array = qscriptvalue_cast<ArrayBufferClass*>(ctor.data());
|
||||
QScriptValue arrayBuffer;
|
||||
if (!array) {
|
||||
qWarning() << "WebSocketClass::handleOnBinaryMessage !ArrayBuffer";
|
||||
} else {
|
||||
arrayBuffer = _engine->newObject(array, data);
|
||||
}
|
||||
arg.setProperty("data", arrayBuffer);
|
||||
args << arg;
|
||||
_onMessageEvent.call(QScriptValue(), args);
|
||||
}
|
||||
}
|
||||
|
||||
void WebSocketClass::handleOnOpen() {
|
||||
if (_onOpenEvent.isFunction()) {
|
||||
_onOpenEvent.call();
|
||||
|
|
|
@ -123,6 +123,7 @@ private slots:
|
|||
void handleOnClose();
|
||||
void handleOnError(QAbstractSocket::SocketError error);
|
||||
void handleOnMessage(const QString& message);
|
||||
void handleOnBinaryMessage(const QByteArray& message);
|
||||
void handleOnOpen();
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue