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 "chatserver.h"
++
++ #include "websocketclientwrapper.h"
++ #include "websockettransport.h"
++
++ #include <QCoreApplication>
++ #include <QWebChannel>
++ #include <QWebSocketServer>
++
++ int main(int argc, char** argv)
++ {
++ QCoreApplication app(argc, argv);
++
++ QWebSocketServer server(QStringLiteral("QWebChannel Standalone Example Server"),
++ QWebSocketServer::NonSecureMode);
++ if (!server.listen(QHostAddress::LocalHost, 12345)) {
++ qFatal("Failed to open web socket server.");
++ return 1;
++ }
++
++ // wrap WebSocket clients in QWebChannelAbstractTransport objects
++ WebSocketClientWrapper clientWrapper(&server);
++
++ // setup the channel
++ QWebChannel channel;
++ QObject::connect(&clientWrapper, &WebSocketClientWrapper::clientConnected,
++ &channel, &QWebChannel::connectTo);
++
++ // setup the dialog and publish it to the QWebChannel
++ ChatServer* chatserver = new ChatServer(&app);
++ channel.registerObject(QStringLiteral("chatserver"), chatserver);
++
++ return app.exec();
++ }