diff options
Diffstat (limited to 'src/websockets')
-rw-r--r-- | src/websockets/qwebsocketserver.cpp | 38 | ||||
-rw-r--r-- | src/websockets/qwebsocketserver.h | 1 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/websockets/qwebsocketserver.cpp b/src/websockets/qwebsocketserver.cpp index 20aa009..2d8f26b 100644 --- a/src/websockets/qwebsocketserver.cpp +++ b/src/websockets/qwebsocketserver.cpp @@ -495,6 +495,44 @@ quint16 QWebSocketServer::serverPort() const } /*! + Returns a URL clients can use to connect to this server if the server is listening for connections. + Otherwise an invalid URL is returned. + + \sa serverPort(), serverAddress(), listen() + */ +QUrl QWebSocketServer::serverUrl() const +{ + QUrl url; + + if (!isListening()) { + return url; + } + + switch (secureMode()) { + case NonSecureMode: + url.setScheme(QStringLiteral("ws")); + break; + #ifndef QT_NO_SSL + case SecureMode: + url.setScheme(QStringLiteral("wss")); + break; + #endif + } + + url.setPort(serverPort()); + + if (serverAddress() == QHostAddress(QHostAddress::Any)) { + // NOTE: On Windows at least, clients cannot connect to QHostAddress::Any + // so in that case we always return LocalHost instead. + url.setHost(QHostAddress(QHostAddress::LocalHost).toString()); + } else { + url.setHost(serverAddress().toString()); + } + + return url; +} + +/*! Sets the maximum number of pending accepted connections to \a numConnections. WebSocketServer will accept no more than \a numConnections incoming connections before nextPendingConnection() is called. diff --git a/src/websockets/qwebsocketserver.h b/src/websockets/qwebsocketserver.h index 1f89ca9..4e76cd4 100644 --- a/src/websockets/qwebsocketserver.h +++ b/src/websockets/qwebsocketserver.h @@ -90,6 +90,7 @@ public: quint16 serverPort() const; QHostAddress serverAddress() const; + QUrl serverUrl() const; SslMode secureMode() const; |