diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/websockets/doc/echoserver.qdoc | 9 | ||||
-rw-r--r-- | examples/websockets/doc/images/echoclient-html-example.png | bin | 0 -> 47215 bytes | |||
-rw-r--r-- | examples/websockets/echoclient/echoclient.cpp | 13 | ||||
-rw-r--r-- | examples/websockets/echoclient/echoclient.h | 3 | ||||
-rw-r--r-- | examples/websockets/echoclient/main.cpp | 15 | ||||
-rw-r--r-- | examples/websockets/echoserver/echoserver.cpp | 15 | ||||
-rw-r--r-- | examples/websockets/echoserver/echoserver.h | 3 | ||||
-rw-r--r-- | examples/websockets/echoserver/main.cpp | 20 | ||||
-rw-r--r-- | examples/websockets/sslechoserver/securesocketclient.qrc | 6 | ||||
-rw-r--r-- | examples/websockets/sslechoserver/sslechoserver.cpp | 4 | ||||
-rw-r--r-- | examples/websockets/sslechoserver/sslechoserver.pro | 2 |
11 files changed, 75 insertions, 15 deletions
diff --git a/examples/websockets/doc/echoserver.qdoc b/examples/websockets/doc/echoserver.qdoc index 1696589..e547e2a 100644 --- a/examples/websockets/doc/echoserver.qdoc +++ b/examples/websockets/doc/echoserver.qdoc @@ -39,7 +39,14 @@ sends back the messages it receives. The Echo Server Example shows how to create a simple server application that - sends back the messages it receives, using the WebSocket API. + sends back the messages it receives, using the \l {Qt WebSockets}{WebSocket} API. + + If your web browser supports \l {Qt WebSockets}{WebSocket}, you can also use it + to open the \l {echoserver/echoclient.html}{echoclient.html} file, and operate + like the following screenshot. + + \image echoclient-html-example.png Screenshot of the HTML version of Echo + Client example \sa {Echo Client Example} */ diff --git a/examples/websockets/doc/images/echoclient-html-example.png b/examples/websockets/doc/images/echoclient-html-example.png Binary files differnew file mode 100644 index 0000000..2cda8fd --- /dev/null +++ b/examples/websockets/doc/images/echoclient-html-example.png diff --git a/examples/websockets/echoclient/echoclient.cpp b/examples/websockets/echoclient/echoclient.cpp index daccbfb..c666c6e 100644 --- a/examples/websockets/echoclient/echoclient.cpp +++ b/examples/websockets/echoclient/echoclient.cpp @@ -36,10 +36,13 @@ QT_USE_NAMESPACE //! [constructor] -EchoClient::EchoClient(const QUrl &url, QObject *parent) : +EchoClient::EchoClient(const QUrl &url, bool debug, QObject *parent) : QObject(parent), - m_url(url) + m_url(url), + m_debug(debug) { + if (m_debug) + qDebug() << "WebSocket server:" << url; connect(&m_webSocket, &QWebSocket::connected, this, &EchoClient::onConnected); connect(&m_webSocket, &QWebSocket::disconnected, this, &EchoClient::closed); m_webSocket.open(QUrl(url)); @@ -49,7 +52,8 @@ EchoClient::EchoClient(const QUrl &url, QObject *parent) : //! [onConnected] void EchoClient::onConnected() { - qDebug() << "WebSocket connected"; + if (m_debug) + qDebug() << "WebSocket connected"; connect(&m_webSocket, &QWebSocket::textMessageReceived, this, &EchoClient::onTextMessageReceived); m_webSocket.sendTextMessage(QStringLiteral("Hello, world!")); @@ -59,7 +63,8 @@ void EchoClient::onConnected() //! [onTextMessageReceived] void EchoClient::onTextMessageReceived(QString message) { - qDebug() << "Message received:" << message; + if (m_debug) + qDebug() << "Message received:" << message; m_webSocket.close(); } //! [onTextMessageReceived] diff --git a/examples/websockets/echoclient/echoclient.h b/examples/websockets/echoclient/echoclient.h index 757c56d..165087b 100644 --- a/examples/websockets/echoclient/echoclient.h +++ b/examples/websockets/echoclient/echoclient.h @@ -40,7 +40,7 @@ class EchoClient : public QObject { Q_OBJECT public: - explicit EchoClient(const QUrl &url, QObject *parent = Q_NULLPTR); + explicit EchoClient(const QUrl &url, bool debug = false, QObject *parent = Q_NULLPTR); Q_SIGNALS: void closed(); @@ -52,6 +52,7 @@ private Q_SLOTS: private: QWebSocket m_webSocket; QUrl m_url; + bool m_debug; }; #endif // ECHOCLIENT_H diff --git a/examples/websockets/echoclient/main.cpp b/examples/websockets/echoclient/main.cpp index 91a2535..36157de 100644 --- a/examples/websockets/echoclient/main.cpp +++ b/examples/websockets/echoclient/main.cpp @@ -31,12 +31,25 @@ ** ****************************************************************************/ #include <QtCore/QCoreApplication> +#include <QtCore/QCommandLineParser> +#include <QtCore/QCommandLineOption> #include "echoclient.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); - EchoClient client(QUrl(QStringLiteral("ws://localhost:1234"))); + + QCommandLineParser parser; + parser.setApplicationDescription("QtWebSockets example: echoclient"); + parser.addHelpOption(); + + QCommandLineOption dbgOption(QStringList() << "d" << "debug", + QCoreApplication::translate("main", "Debug output [default: off].")); + parser.addOption(dbgOption); + parser.process(a); + bool debug = parser.isSet(dbgOption); + + EchoClient client(QUrl(QStringLiteral("ws://localhost:1234")), debug); QObject::connect(&client, &EchoClient::closed, &a, &QCoreApplication::quit); return a.exec(); diff --git a/examples/websockets/echoserver/echoserver.cpp b/examples/websockets/echoserver/echoserver.cpp index f83a1ea..8c785e8 100644 --- a/examples/websockets/echoserver/echoserver.cpp +++ b/examples/websockets/echoserver/echoserver.cpp @@ -38,14 +38,16 @@ QT_USE_NAMESPACE //! [constructor] -EchoServer::EchoServer(quint16 port, QObject *parent) : +EchoServer::EchoServer(quint16 port, bool debug, QObject *parent) : QObject(parent), m_pWebSocketServer(new QWebSocketServer(QStringLiteral("Echo Server"), QWebSocketServer::NonSecureMode, this)), - m_clients() + m_clients(), + m_debug(debug) { if (m_pWebSocketServer->listen(QHostAddress::Any, port)) { - qDebug() << "Echoserver listening on port" << port; + if (m_debug) + qDebug() << "Echoserver listening on port" << port; connect(m_pWebSocketServer, &QWebSocketServer::newConnection, this, &EchoServer::onNewConnection); connect(m_pWebSocketServer, &QWebSocketServer::closed, this, &EchoServer::closed); @@ -76,10 +78,11 @@ void EchoServer::onNewConnection() void EchoServer::processTextMessage(QString message) { QWebSocket *pClient = qobject_cast<QWebSocket *>(sender()); + if (m_debug) + qDebug() << "Message received:" << message; if (pClient) { pClient->sendTextMessage(message); } - m_pWebSocketServer->close(); } //! [processTextMessage] @@ -87,6 +90,8 @@ void EchoServer::processTextMessage(QString message) void EchoServer::processBinaryMessage(QByteArray message) { QWebSocket *pClient = qobject_cast<QWebSocket *>(sender()); + if (m_debug) + qDebug() << "Binary Message received:" << message; if (pClient) { pClient->sendBinaryMessage(message); } @@ -97,6 +102,8 @@ void EchoServer::processBinaryMessage(QByteArray message) void EchoServer::socketDisconnected() { QWebSocket *pClient = qobject_cast<QWebSocket *>(sender()); + if (m_debug) + qDebug() << "socketDisconnected:" << pClient; if (pClient) { m_clients.removeAll(pClient); pClient->deleteLater(); diff --git a/examples/websockets/echoserver/echoserver.h b/examples/websockets/echoserver/echoserver.h index a8c860e..2bb9067 100644 --- a/examples/websockets/echoserver/echoserver.h +++ b/examples/websockets/echoserver/echoserver.h @@ -44,7 +44,7 @@ class EchoServer : public QObject { Q_OBJECT public: - explicit EchoServer(quint16 port, QObject *parent = Q_NULLPTR); + explicit EchoServer(quint16 port, bool debug = false, QObject *parent = Q_NULLPTR); ~EchoServer(); Q_SIGNALS: @@ -59,6 +59,7 @@ private Q_SLOTS: private: QWebSocketServer *m_pWebSocketServer; QList<QWebSocket *> m_clients; + bool m_debug; }; #endif //ECHOSERVER_H diff --git a/examples/websockets/echoserver/main.cpp b/examples/websockets/echoserver/main.cpp index 3b31dde..51a684a 100644 --- a/examples/websockets/echoserver/main.cpp +++ b/examples/websockets/echoserver/main.cpp @@ -31,12 +31,30 @@ ** ****************************************************************************/ #include <QtCore/QCoreApplication> +#include <QtCore/QCommandLineParser> +#include <QtCore/QCommandLineOption> #include "echoserver.h" int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); - EchoServer *server = new EchoServer(1234); + + QCommandLineParser parser; + parser.setApplicationDescription("QtWebSockets example: echoserver"); + parser.addHelpOption(); + + QCommandLineOption dbgOption(QStringList() << "d" << "debug", + QCoreApplication::translate("main", "Debug output [default: off].")); + parser.addOption(dbgOption); + QCommandLineOption portOption(QStringList() << "p" << "port", + QCoreApplication::translate("main", "Port for echoserver [default: 1234]."), + QCoreApplication::translate("main", "port"), QLatin1Literal("1234")); + parser.addOption(portOption); + parser.process(a); + bool debug = parser.isSet(dbgOption); + int port = parser.value(portOption).toInt(); + + EchoServer *server = new EchoServer(port, debug); QObject::connect(server, &EchoServer::closed, &a, &QCoreApplication::quit); return a.exec(); diff --git a/examples/websockets/sslechoserver/securesocketclient.qrc b/examples/websockets/sslechoserver/securesocketclient.qrc new file mode 100644 index 0000000..448fa92 --- /dev/null +++ b/examples/websockets/sslechoserver/securesocketclient.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>localhost.cert</file> + <file>localhost.key</file> +</qresource> +</RCC> diff --git a/examples/websockets/sslechoserver/sslechoserver.cpp b/examples/websockets/sslechoserver/sslechoserver.cpp index 01ee87b..2904b9e 100644 --- a/examples/websockets/sslechoserver/sslechoserver.cpp +++ b/examples/websockets/sslechoserver/sslechoserver.cpp @@ -50,8 +50,8 @@ SslEchoServer::SslEchoServer(quint16 port, QObject *parent) : QWebSocketServer::SecureMode, this); QSslConfiguration sslConfiguration; - QFile certFile(QStringLiteral("./localhost.cert")); - QFile keyFile(QStringLiteral("./localhost.key")); + QFile certFile(QStringLiteral(":/localhost.cert")); + QFile keyFile(QStringLiteral(":/localhost.key")); certFile.open(QIODevice::ReadOnly); keyFile.open(QIODevice::ReadOnly); QSslCertificate certificate(&certFile, QSsl::Pem); diff --git a/examples/websockets/sslechoserver/sslechoserver.pro b/examples/websockets/sslechoserver/sslechoserver.pro index 2663872..a1a5275 100644 --- a/examples/websockets/sslechoserver/sslechoserver.pro +++ b/examples/websockets/sslechoserver/sslechoserver.pro @@ -15,3 +15,5 @@ HEADERS += \ sslechoserver.h OTHER_FILES += sslechoclient.html + +RESOURCES += securesocketclient.qrc |