diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/standalone/websockettransport.cpp | 24 | ||||
-rw-r--r-- | examples/standalone/websockettransport.h | 5 |
2 files changed, 26 insertions, 3 deletions
diff --git a/examples/standalone/websockettransport.cpp b/examples/standalone/websockettransport.cpp index 5df9f85..f1ecee2 100644 --- a/examples/standalone/websockettransport.cpp +++ b/examples/standalone/websockettransport.cpp @@ -41,6 +41,10 @@ #include "websockettransport.h" +#include <QJsonDocument> +#include <QJsonObject> +#include <QDebug> + #include <QtWebSockets/QWebSocket> /*! @@ -66,9 +70,25 @@ WebSocketTransport::~WebSocketTransport() } -void WebSocketTransport::sendTextMessage(const QString &message) +void WebSocketTransport::sendMessage(const QJsonObject &message) +{ + QJsonDocument doc(message); + m_socket->sendTextMessage(QString::fromUtf8(doc.toJson(QJsonDocument::Compact))); +} + +void WebSocketTransport::textMessageReceived(const QString &messageData) { - m_socket->sendTextMessage(message); + QJsonParseError error; + QJsonDocument message = QJsonDocument::fromJson(messageData.toUtf8(), &error); + if (error.error) { + qWarning() << "Failed to parse text message as JSON object:" << messageData + << "Error is:" << error.errorString(); + return; + } else if (!message.isObject()) { + qWarning() << "Received JSON message that is not an object: " << messageData; + return; + } + emit messageReceived(message.object(), this); } QT_END_NAMESPACE diff --git a/examples/standalone/websockettransport.h b/examples/standalone/websockettransport.h index 5fab8f6..828ac00 100644 --- a/examples/standalone/websockettransport.h +++ b/examples/standalone/websockettransport.h @@ -54,7 +54,10 @@ public: explicit WebSocketTransport(QWebSocket *socket); virtual ~WebSocketTransport(); - void sendTextMessage(const QString &message) Q_DECL_OVERRIDE; + void sendMessage(const QJsonObject &message) Q_DECL_OVERRIDE; + +private Q_SLOTS: + void textMessageReceived(const QString &message); private: QWebSocket *m_socket; |