Revision control

+ // Copyright (C) 2016 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Milian Wolff <milian.wolff@kdab.com>
+ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+ #include "websocketclientwrapper.h"
+ #include "websockettransport.h"
+
+ #include <QWebSocketServer>
+
+ /*!
+ \brief Wraps connected QWebSockets clients in WebSocketTransport objects.
+
+ This code is all that is required to connect incoming WebSockets to the WebChannel. Any kind
+ of remote JavaScript client that supports WebSockets can thus receive messages and access the
+ published objects.
+ */
+
+ /*!
+ Construct the client wrapper with the given parent.
+
+ All clients connecting to the QWebSocketServer will be automatically wrapped
+ in WebSocketTransport objects.
+ */
+ WebSocketClientWrapper::WebSocketClientWrapper(QWebSocketServer *server, QObject *parent)
+ : QObject(parent)
+ , m_server(server)
+ {
+ connect(server, &QWebSocketServer::newConnection,
+ this, &WebSocketClientWrapper::handleNewConnection);
+ }
+
+ /*!
+ Wrap an incoming WebSocket connection in a WebSocketTransport object.
+ */
+ void WebSocketClientWrapper::handleNewConnection()
+ {
+ emit clientConnected(new WebSocketTransport(m_server->nextPendingConnection()));
+ }