diff options
author | Liang Qi <liang.qi@qt.io> | 2017-10-11 20:17:45 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-10-11 20:17:45 +0200 |
commit | 825df0cef516fb84adab88a31106e214f2b29b2d (patch) | |
tree | e6e7fb12b1c77faa65df20106c8bf342a410b690 /examples | |
parent | 75042d31d1d267d0a4091932c95579747a102e9d (diff) | |
parent | cd26439ac7ca1a444e9b5534a504afb0bb411890 (diff) | |
download | qtwebsockets-825df0cef516fb84adab88a31106e214f2b29b2d.tar.gz |
Merge remote-tracking branch 'origin/5.10' into dev
Conflicts:
examples/websockets/simplechat/chatserver.cpp
Change-Id: I98697cef4c05516b5b4122ad81c084546d57115f
Diffstat (limited to 'examples')
-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 | 6 | ||||
-rw-r--r-- | examples/websockets/simplechat/main.cpp | 1 |
4 files changed, 40 insertions, 22 deletions
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 50d2625..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(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 43ce306..4a8285b 100644 --- a/examples/websockets/simplechat/chatserver.h +++ b/examples/websockets/simplechat/chatserver.h @@ -52,10 +52,10 @@ #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 { @@ -64,9 +64,9 @@ public: 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[]) |