summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/websockets/doc/echoserver.qdoc9
-rw-r--r--examples/websockets/doc/images/echoclient-html-example.pngbin0 -> 47215 bytes
-rw-r--r--examples/websockets/echoclient/echoclient.cpp13
-rw-r--r--examples/websockets/echoclient/echoclient.h3
-rw-r--r--examples/websockets/echoclient/main.cpp15
-rw-r--r--examples/websockets/echoserver/echoserver.cpp15
-rw-r--r--examples/websockets/echoserver/echoserver.h3
-rw-r--r--examples/websockets/echoserver/main.cpp20
-rw-r--r--examples/websockets/sslechoserver/securesocketclient.qrc6
-rw-r--r--examples/websockets/sslechoserver/sslechoserver.cpp4
-rw-r--r--examples/websockets/sslechoserver/sslechoserver.pro2
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
new file mode 100644
index 0000000..2cda8fd
--- /dev/null
+++ b/examples/websockets/doc/images/echoclient-html-example.png
Binary files differ
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