diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/qmlwebsockets/plugins.qmltypes | 17 | ||||
-rw-r--r-- | src/imports/qmlwebsockets/qmlwebsockets.pro | 2 | ||||
-rw-r--r-- | src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp | 1 | ||||
-rw-r--r-- | src/imports/qmlwebsockets/qqmlwebsocket.cpp | 24 | ||||
-rw-r--r-- | src/imports/qmlwebsockets/qqmlwebsocket.h | 3 | ||||
-rw-r--r-- | src/websockets/qwebsocket_p.cpp | 9 |
6 files changed, 45 insertions, 11 deletions
diff --git a/src/imports/qmlwebsockets/plugins.qmltypes b/src/imports/qmlwebsockets/plugins.qmltypes index b79da44..cbbb628 100644 --- a/src/imports/qmlwebsockets/plugins.qmltypes +++ b/src/imports/qmlwebsockets/plugins.qmltypes @@ -4,15 +4,15 @@ import QtQuick.tooling 1.2 // It is used for QML tooling purposes only. // // This file was auto-generated by: -// 'qmlplugindump -nonrelocatable QtWebSockets 1.0' +// 'qmlplugindump -nonrelocatable QtWebSockets 1.1' Module { dependencies: [] Component { name: "QQmlWebSocket" prototype: "QObject" - exports: ["QtWebSockets/WebSocket 1.0"] - exportMetaObjectRevisions: [0] + exports: ["QtWebSockets/WebSocket 1.0", "QtWebSockets/WebSocket 1.1"] + exportMetaObjectRevisions: [0, 1] Enum { name: "Status" values: { @@ -32,6 +32,11 @@ Module { Parameter { name: "message"; type: "string" } } Signal { + name: "binaryMessageReceived" + revision: 1 + Parameter { name: "message"; type: "QByteArray" } + } + Signal { name: "statusChanged" Parameter { name: "status"; type: "Status" } } @@ -48,6 +53,12 @@ Module { type: "qlonglong" Parameter { name: "message"; type: "string" } } + Method { + name: "sendBinaryMessage" + revision: 1 + type: "qlonglong" + Parameter { name: "message"; type: "QByteArray" } + } } Component { name: "QQmlWebSocketServer" diff --git a/src/imports/qmlwebsockets/qmlwebsockets.pro b/src/imports/qmlwebsockets/qmlwebsockets.pro index dea84a8..fef47f4 100644 --- a/src/imports/qmlwebsockets/qmlwebsockets.pro +++ b/src/imports/qmlwebsockets/qmlwebsockets.pro @@ -1,4 +1,4 @@ -QT = core websockets qml +QT = core websockets qml qml-private core-private TARGETPATH = QtWebSockets diff --git a/src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp b/src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp index 11c9dec..24fe34a 100644 --- a/src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp +++ b/src/imports/qmlwebsockets/qmlwebsockets_plugin.cpp @@ -53,6 +53,7 @@ void QtWebSocketsDeclarativeModule::registerTypes(const char *uri) // @uri QtWebSockets qmlRegisterType<QQmlWebSocket>(uri, 1 /*major*/, 0 /*minor*/, "WebSocket"); + qmlRegisterType<QQmlWebSocket, 1>(uri, 1 /*major*/, 1 /*minor*/, "WebSocket"); qmlRegisterType<QQmlWebSocketServer>(uri, 1 /*major*/, 0 /*minor*/, "WebSocketServer"); } diff --git a/src/imports/qmlwebsockets/qqmlwebsocket.cpp b/src/imports/qmlwebsockets/qqmlwebsocket.cpp index aea2c82..9ff88d5 100644 --- a/src/imports/qmlwebsockets/qqmlwebsocket.cpp +++ b/src/imports/qmlwebsockets/qqmlwebsocket.cpp @@ -90,6 +90,12 @@ */ /*! + \qmlsignal WebSocket::binaryMessageReceived(QString message) + \since 5.8 + This signal is emitted when a binary message is received. + */ + +/*! \qmlsignal WebSocket::statusChanged(Status status) This signal is emitted when the status of the WebSocket changes. the \l [QML]{WebSocket::status}{status} argument provides the current status. @@ -102,6 +108,12 @@ Sends \c message to the server. */ +/*! + \qmlmethod void WebSocket::sendBinaryMessage(ArrayBuffer message) + \since 5.8 + Sends \c message to the server. + */ + #include "qqmlwebsocket.h" #include <QtWebSockets/QWebSocket> @@ -144,6 +156,16 @@ qint64 QQmlWebSocket::sendTextMessage(const QString &message) return m_webSocket->sendTextMessage(message); } +qint64 QQmlWebSocket::sendBinaryMessage(const QByteArray &message) +{ + if (m_status != Open) { + setErrorString(tr("Messages can only be sent when the socket is open.")); + setStatus(Error); + return 0; + } + return m_webSocket->sendBinaryMessage(message); +} + QUrl QQmlWebSocket::url() const { return m_url; @@ -198,6 +220,8 @@ void QQmlWebSocket::setSocket(QWebSocket *socket) m_webSocket->setParent(Q_NULLPTR); connect(m_webSocket.data(), &QWebSocket::textMessageReceived, this, &QQmlWebSocket::textMessageReceived); + connect(m_webSocket.data(), &QWebSocket::binaryMessageReceived, + this, &QQmlWebSocket::binaryMessageReceived); typedef void (QWebSocket::* ErrorSignal)(QAbstractSocket::SocketError); connect(m_webSocket.data(), static_cast<ErrorSignal>(&QWebSocket::error), this, &QQmlWebSocket::onError); diff --git a/src/imports/qmlwebsockets/qqmlwebsocket.h b/src/imports/qmlwebsockets/qqmlwebsocket.h index c5682ed..c3a808f 100644 --- a/src/imports/qmlwebsockets/qqmlwebsocket.h +++ b/src/imports/qmlwebsockets/qqmlwebsocket.h @@ -83,10 +83,11 @@ public: bool isActive() const; Q_INVOKABLE qint64 sendTextMessage(const QString &message); - + Q_REVISION(1) Q_INVOKABLE qint64 sendBinaryMessage(const QByteArray &message); Q_SIGNALS: void textMessageReceived(QString message); + Q_REVISION(1) void binaryMessageReceived(QByteArray message); void statusChanged(Status status); void activeChanged(bool isActive); void errorStringChanged(QString errorString); diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp index 8cd7375..188df33 100644 --- a/src/websockets/qwebsocket_p.cpp +++ b/src/websockets/qwebsocket_p.cpp @@ -708,12 +708,11 @@ QByteArray QWebSocketPrivate::getFrameHeader(QWebSocketProtocol::OpCode opCode, bool lastFrame) { QByteArray header; - quint8 byte = 0x00; bool ok = payloadLength <= 0x7FFFFFFFFFFFFFFFULL; if (Q_LIKELY(ok)) { //FIN, RSV1-3, opcode (RSV-1, RSV-2 and RSV-3 are zero) - byte = static_cast<quint8>((opCode & 0x0F) | (lastFrame ? 0x80 : 0x00)); + quint8 byte = static_cast<quint8>((opCode & 0x0F) | (lastFrame ? 0x80 : 0x00)); header.append(static_cast<char>(byte)); byte = 0x00; @@ -773,7 +772,6 @@ qint64 QWebSocketPrivate::doWriteFrames(const QByteArray &data, bool isBinary) if (Q_UNLIKELY(numFrames == 0)) numFrames = 1; quint64 currentPosition = 0; - qint64 bytesWritten = 0; quint64 bytesLeft = data.size(); for (int i = 0; i < numFrames; ++i) { @@ -789,7 +787,7 @@ qint64 QWebSocketPrivate::doWriteFrames(const QByteArray &data, bool isBinary) : QWebSocketProtocol::OpCodeContinue; //write header - bytesWritten += m_pSocket->write(getFrameHeader(opcode, size, maskingKey, isLastFrame)); + m_pSocket->write(getFrameHeader(opcode, size, maskingKey, isLastFrame)); //write payload if (Q_LIKELY(size > 0)) { @@ -798,7 +796,6 @@ qint64 QWebSocketPrivate::doWriteFrames(const QByteArray &data, bool isBinary) QWebSocketProtocol::mask(currentData, size, maskingKey); qint64 written = m_pSocket->write(currentData, static_cast<qint64>(size)); if (Q_LIKELY(written > 0)) { - bytesWritten += written; payloadWritten += written; } else { m_pSocket->flush(); @@ -881,7 +878,7 @@ qint64 QWebSocketPrivate::writeFrame(const QByteArray &frame) /*! \internal */ -QString readLine(QTcpSocket *pSocket) +static QString readLine(QTcpSocket *pSocket) { Q_ASSERT(pSocket); QString line; |