diff options
Diffstat (limited to 'examples/websockets')
-rw-r--r-- | examples/websockets/echoclient/echoclient.h | 2 | ||||
-rw-r--r-- | examples/websockets/echoserver/echoserver.h | 2 | ||||
-rw-r--r-- | examples/websockets/simplechat/chatclient.html | 15 | ||||
-rw-r--r-- | examples/websockets/simplechat/chatserver.cpp | 40 | ||||
-rw-r--r-- | examples/websockets/simplechat/chatserver.h | 8 | ||||
-rw-r--r-- | examples/websockets/simplechat/main.cpp | 1 | ||||
-rw-r--r-- | examples/websockets/sslechoclient/sslechoclient.cpp | 3 | ||||
-rw-r--r-- | examples/websockets/sslechoclient/sslechoclient.h | 2 | ||||
-rw-r--r-- | examples/websockets/sslechoserver/sslechoserver.cpp | 2 | ||||
-rw-r--r-- | examples/websockets/sslechoserver/sslechoserver.h | 2 |
10 files changed, 47 insertions, 30 deletions
diff --git a/examples/websockets/echoclient/echoclient.h b/examples/websockets/echoclient/echoclient.h index a0f0d37..a7fd234 100644 --- a/examples/websockets/echoclient/echoclient.h +++ b/examples/websockets/echoclient/echoclient.h @@ -57,7 +57,7 @@ class EchoClient : public QObject { Q_OBJECT public: - explicit EchoClient(const QUrl &url, bool debug = false, QObject *parent = Q_NULLPTR); + explicit EchoClient(const QUrl &url, bool debug = false, QObject *parent = nullptr); Q_SIGNALS: void closed(); diff --git a/examples/websockets/echoserver/echoserver.h b/examples/websockets/echoserver/echoserver.h index 593a8c8..3681917 100644 --- a/examples/websockets/echoserver/echoserver.h +++ b/examples/websockets/echoserver/echoserver.h @@ -61,7 +61,7 @@ class EchoServer : public QObject { Q_OBJECT public: - explicit EchoServer(quint16 port, bool debug = false, QObject *parent = Q_NULLPTR); + explicit EchoServer(quint16 port, bool debug = false, QObject *parent = nullptr); ~EchoServer(); Q_SIGNALS: diff --git a/examples/websockets/simplechat/chatclient.html b/examples/websockets/simplechat/chatclient.html index 511d05b..d2dbf47 100644 --- a/examples/websockets/simplechat/chatclient.html +++ b/examples/websockets/simplechat/chatclient.html @@ -5,17 +5,20 @@ <body> <h1>WebSocket Chat Client</h1> <p> + Host: <input id="webSocketHost" type="text" value="localhost:1234"/> + </p> + <p> <button onClick="initWebSocket();">Connect</button> - <button onClick="stopWebSocket();">Disconnect</button> + <button id="disconnectButton" onClick="stopWebSocket();" disabled>Disconnect</button> <button onClick="checkSocket();">State</button> </p> <p> - <textarea id="debugTextArea" style="width:400px;height:200px;"></textarea> + <textarea id="debugTextArea" style="width:400px;height:200px;" readonly></textarea> </p> <p> <input type="text" id="inputNick" value="nickname" /> <input type="text" id="inputText" onkeydown="if(event.keyCode==13)sendMessage();"/> - <button onClick="sendMessage();">Send</button> + <button id="sendButton" onClick="sendMessage();" disabled>Send</button> </p> <script type="text/javascript"> @@ -38,7 +41,6 @@ } } - var wsUri = "ws://localhost:1234"; var websocket = null; function initWebSocket() { @@ -47,12 +49,17 @@ WebSocket = MozWebSocket; if ( websocket && websocket.readyState == 1 ) websocket.close(); + var wsUri = "ws://" + document.getElementById("webSocketHost").value; websocket = new WebSocket( wsUri ); websocket.onopen = function (evt) { debug("CONNECTED"); + document.getElementById("disconnectButton").disabled = false; + document.getElementById("sendButton").disabled = false; }; websocket.onclose = function (evt) { debug("DISCONNECTED"); + document.getElementById("disconnectButton").disabled = true; + document.getElementById("sendButton").disabled = true; }; websocket.onmessage = function (evt) { console.log( "Message received :", evt.data ); diff --git a/examples/websockets/simplechat/chatserver.cpp b/examples/websockets/simplechat/chatserver.cpp index ae207f5..8885fe8 100644 --- a/examples/websockets/simplechat/chatserver.cpp +++ b/examples/websockets/simplechat/chatserver.cpp @@ -48,23 +48,31 @@ ** ****************************************************************************/ #include "chatserver.h" -#include "QtWebSockets/QWebSocketServer" -#include "QtWebSockets/QWebSocket" -#include <QtCore/QDebug> + +#include <QtWebSockets> +#include <QtCore> + +#include <cstdio> +using namespace std; QT_USE_NAMESPACE +static QString getIdentifier(QWebSocket *peer) +{ + return QStringLiteral("%1:%2").arg(peer->peerAddress().toString(), + QString::number(peer->peerPort())); +} + //! [constructor] ChatServer::ChatServer(quint16 port, QObject *parent) : QObject(parent), - m_pWebSocketServer(Q_NULLPTR) + m_pWebSocketServer(new QWebSocketServer(QStringLiteral("Chat Server"), + QWebSocketServer::NonSecureMode, + this)) { - m_pWebSocketServer = new QWebSocketServer(QStringLiteral("Chat Server"), - QWebSocketServer::NonSecureMode, - this); if (m_pWebSocketServer->listen(QHostAddress::Any, port)) { - qDebug() << "Chat Server listening on port" << port; + QTextStream(stdout) << "Chat Server listening on port " << port << '\n'; connect(m_pWebSocketServer, &QWebSocketServer::newConnection, this, &ChatServer::onNewConnection); } @@ -73,31 +81,32 @@ ChatServer::ChatServer(quint16 port, QObject *parent) : ChatServer::~ChatServer() { m_pWebSocketServer->close(); - qDeleteAll(m_clients.begin(), m_clients.end()); } //! [constructor] //! [onNewConnection] void ChatServer::onNewConnection() { - QWebSocket *pSocket = m_pWebSocketServer->nextPendingConnection(); + auto pSocket = m_pWebSocketServer->nextPendingConnection(); + QTextStream(stdout) << getIdentifier(pSocket) << " connected!\n"; + pSocket->setParent(this); - connect(pSocket, &QWebSocket::textMessageReceived, this, &ChatServer::processMessage); - connect(pSocket, &QWebSocket::disconnected, this, &ChatServer::socketDisconnected); + connect(pSocket, &QWebSocket::textMessageReceived, + this, &ChatServer::processMessage); + connect(pSocket, &QWebSocket::disconnected, + this, &ChatServer::socketDisconnected); m_clients << pSocket; } //! [onNewConnection] //! [processMessage] -void ChatServer::processMessage(QString message) +void ChatServer::processMessage(const QString &message) { QWebSocket *pSender = qobject_cast<QWebSocket *>(sender()); for (QWebSocket *pClient : qAsConst(m_clients)) { if (pClient != pSender) //don't echo message back to sender - { pClient->sendTextMessage(message); - } } } //! [processMessage] @@ -106,6 +115,7 @@ void ChatServer::processMessage(QString message) void ChatServer::socketDisconnected() { QWebSocket *pClient = qobject_cast<QWebSocket *>(sender()); + QTextStream(stdout) << getIdentifier(pClient) << " disconnected!\n"; if (pClient) { m_clients.removeAll(pClient); diff --git a/examples/websockets/simplechat/chatserver.h b/examples/websockets/simplechat/chatserver.h index 4c652a3..4a8285b 100644 --- a/examples/websockets/simplechat/chatserver.h +++ b/examples/websockets/simplechat/chatserver.h @@ -52,21 +52,21 @@ #include <QtCore/QObject> #include <QtCore/QList> -#include <QtCore/QByteArray> QT_FORWARD_DECLARE_CLASS(QWebSocketServer) QT_FORWARD_DECLARE_CLASS(QWebSocket) +QT_FORWARD_DECLARE_CLASS(QString) class ChatServer : public QObject { Q_OBJECT public: - explicit ChatServer(quint16 port, QObject *parent = Q_NULLPTR); + explicit ChatServer(quint16 port, QObject *parent = nullptr); virtual ~ChatServer(); -private Q_SLOTS: +private slots: void onNewConnection(); - void processMessage(QString message); + void processMessage(const QString &message); void socketDisconnected(); private: diff --git a/examples/websockets/simplechat/main.cpp b/examples/websockets/simplechat/main.cpp index 0b1c753..a1ffb49 100644 --- a/examples/websockets/simplechat/main.cpp +++ b/examples/websockets/simplechat/main.cpp @@ -48,6 +48,7 @@ ** ****************************************************************************/ #include <QtCore/QCoreApplication> + #include "chatserver.h" int main(int argc, char *argv[]) diff --git a/examples/websockets/sslechoclient/sslechoclient.cpp b/examples/websockets/sslechoclient/sslechoclient.cpp index 3de2fec..6427f88 100644 --- a/examples/websockets/sslechoclient/sslechoclient.cpp +++ b/examples/websockets/sslechoclient/sslechoclient.cpp @@ -59,8 +59,7 @@ SslEchoClient::SslEchoClient(const QUrl &url, QObject *parent) : QObject(parent) { connect(&m_webSocket, &QWebSocket::connected, this, &SslEchoClient::onConnected); - typedef void (QWebSocket:: *sslErrorsSignal)(const QList<QSslError> &); - connect(&m_webSocket, static_cast<sslErrorsSignal>(&QWebSocket::sslErrors), + connect(&m_webSocket, QOverload<const QList<QSslError>&>::of(&QWebSocket::sslErrors), this, &SslEchoClient::onSslErrors); m_webSocket.open(QUrl(url)); } diff --git a/examples/websockets/sslechoclient/sslechoclient.h b/examples/websockets/sslechoclient/sslechoclient.h index 5b87557..6634a44 100644 --- a/examples/websockets/sslechoclient/sslechoclient.h +++ b/examples/websockets/sslechoclient/sslechoclient.h @@ -63,7 +63,7 @@ class SslEchoClient : public QObject { Q_OBJECT public: - explicit SslEchoClient(const QUrl &url, QObject *parent = Q_NULLPTR); + explicit SslEchoClient(const QUrl &url, QObject *parent = nullptr); private Q_SLOTS: void onConnected(); diff --git a/examples/websockets/sslechoserver/sslechoserver.cpp b/examples/websockets/sslechoserver/sslechoserver.cpp index ae5d9ad..00bc6c1 100644 --- a/examples/websockets/sslechoserver/sslechoserver.cpp +++ b/examples/websockets/sslechoserver/sslechoserver.cpp @@ -60,7 +60,7 @@ QT_USE_NAMESPACE //! [constructor] SslEchoServer::SslEchoServer(quint16 port, QObject *parent) : QObject(parent), - m_pWebSocketServer(Q_NULLPTR) + m_pWebSocketServer(nullptr) { m_pWebSocketServer = new QWebSocketServer(QStringLiteral("SSL Echo Server"), QWebSocketServer::SecureMode, diff --git a/examples/websockets/sslechoserver/sslechoserver.h b/examples/websockets/sslechoserver/sslechoserver.h index 109a78b..8064476 100644 --- a/examples/websockets/sslechoserver/sslechoserver.h +++ b/examples/websockets/sslechoserver/sslechoserver.h @@ -62,7 +62,7 @@ class SslEchoServer : public QObject { Q_OBJECT public: - explicit SslEchoServer(quint16 port, QObject *parent = Q_NULLPTR); + explicit SslEchoServer(quint16 port, QObject *parent = nullptr); virtual ~SslEchoServer(); private Q_SLOTS: |