summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/platforms/webgl/qwebglwebsocketserver.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/plugins/platforms/webgl/qwebglwebsocketserver.cpp b/src/plugins/platforms/webgl/qwebglwebsocketserver.cpp
index 959287d..ed7a4d6 100644
--- a/src/plugins/platforms/webgl/qwebglwebsocketserver.cpp
+++ b/src/plugins/platforms/webgl/qwebglwebsocketserver.cpp
@@ -107,8 +107,20 @@ QVariant QWebGLWebSocketServer::queryValue(int id)
void QWebGLWebSocketServer::create()
{
Q_D(QWebGLWebSocketServer);
- d->server = new QWebSocketServer(QLatin1String("qtwebgl"), QWebSocketServer::NonSecureMode);
- if (d->server->listen(QHostAddress::Any)) {
+ const QString serverName = QLatin1String("qtwebgl");
+ const QUrl url(QString::fromUtf8(qgetenv("QT_WEBGL_WEBSOCKETSERVER")));
+ QHostAddress hostAddress(url.host());
+ if (!url.isValid() || url.isEmpty() || !(url.scheme() == "ws" || url.scheme() == "wss")) {
+ d->server = new QWebSocketServer(serverName, QWebSocketServer::NonSecureMode);
+ hostAddress = QHostAddress::Any;
+ } else {
+ d->server = new QWebSocketServer(serverName,
+#if QT_CONFIG(ssl)
+ url.scheme() == "wss" ? QWebSocketServer::SecureMode :
+#endif
+ QWebSocketServer::NonSecureMode);
+ }
+ if (d->server->listen(hostAddress, url.port(0))) {
connect(d->server, &QWebSocketServer::newConnection,
this, &QWebGLWebSocketServer::onNewConnection);
} else {