Sur cette page

QWebSocketServer Class

Implémente un serveur basé sur WebSocket. En savoir plus...

En-tête : #include <QWebSocketServer>
CMake : find_package(Qt6 REQUIRED COMPONENTS WebSockets)
target_link_libraries(mytarget PRIVATE Qt6::WebSockets)
qmake : QT += websockets
Hérite de : QObject

Types publics

enum SslMode { SecureMode, NonSecureMode }

Fonctions publiques

QWebSocketServer(const QString &serverName, QWebSocketServer::SslMode secureMode, QObject *parent = nullptr)
virtual ~QWebSocketServer() override
void close()
QWebSocketProtocol::CloseCode error() const
QString errorString() const
void handleConnection(QTcpSocket *socket) const
std::chrono::milliseconds handshakeTimeout() const
int handshakeTimeoutMS() const
bool hasPendingConnections() const
bool isListening() const
bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
int maxPendingConnections() const
virtual QWebSocket *nextPendingConnection()
void pauseAccepting()
QNetworkProxy proxy() const
void resumeAccepting()
QWebSocketServer::SslMode secureMode() const
QHostAddress serverAddress() const
QString serverName() const
quint16 serverPort() const
QUrl serverUrl() const
void setHandshakeTimeout(std::chrono::milliseconds msec)
void setHandshakeTimeout(int msec)
void setMaxPendingConnections(int numConnections)
void setProxy(const QNetworkProxy &networkProxy)
void setServerName(const QString &serverName)
bool setSocketDescriptor(qintptr socketDescriptor)
void setSslConfiguration(const QSslConfiguration &sslConfiguration)
(since 6.4) void setSupportedSubprotocols(const QStringList &protocols)
qintptr socketDescriptor() const
QSslConfiguration sslConfiguration() const
(since 6.4) QStringList supportedSubprotocols() const
QList<QWebSocketProtocol::Version> supportedVersions() const

Signaux

void acceptError(QAbstractSocket::SocketError socketError)
(since 6.2) void alertReceived(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
(since 6.2) void alertSent(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
void closed()
(since 6.2) void handshakeInterruptedOnError(const QSslError &error)
void newConnection()
void originAuthenticationRequired(QWebSocketCorsAuthenticator *authenticator)
void peerVerifyError(const QSslError &error)
void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
void serverError(QWebSocketProtocol::CloseCode closeCode)
void sslErrors(const QList<QSslError> &errors)
(since 6.11) void sslErrorsOccurred(QSslSocket *socket, const QList<QSslError> &errors)

Description détaillée

Elle s'inspire de QTcpServer et se comporte de la même manière. Ainsi, si vous savez utiliser QTcpServer, vous savez utiliser QWebSocketServer. Cette classe permet d'accepter les connexions WebSocket entrantes. Vous pouvez spécifier le port ou laisser QWebSocketServer en choisir un automatiquement. Vous pouvez écouter sur une adresse spécifique ou sur toutes les adresses de la machine. Appelez listen() pour que le serveur écoute les connexions entrantes.

Le signal ` newConnection()` est alors émis chaque fois qu’un client se connecte au serveur. Appelez ` nextPendingConnection()` pour accepter la connexion en attente en tant que ` QWebSocket` connecté. La fonction renvoie un pointeur vers un ` QWebSocket ` de type ` QAbstractSocket::ConnectedState ` que vous pouvez utiliser pour communiquer avec le client.

En cas d’erreur, la fonction ` serverError()` renvoie le type d’erreur, et la fonction ` errorString()` peut être appelée pour obtenir une description lisible par l’utilisateur de ce qui s’est produit.

Lors de l'écoute des connexions, l'adresse et le port sur lesquels le serveur est à l'écoute sont disponibles via les méthodes serverAddress() et serverPort().

L’appel de close() arrête l’écoute des connexions entrantes par QWebSocketServer.

QWebSocketServer ne prend actuellement pas en charge les extensions WebSocket.

Remarque : lorsque vous utilisez des certificats auto-signés, le bug 594502 de Firefox empêche ce navigateur de se connecter à un serveur WebSocket sécurisé. Pour contourner ce problème, accédez d'abord au serveur WebSocket sécurisé via HTTPS. Firefox indiquera que le certificat n'est pas valide. À partir de là, le certificat peut être ajouté à la liste des exceptions. La connexion WebSocket sécurisée devrait alors fonctionner.

QWebSocketServer ne prend en charge que la version 13 du protocole WebSocket, telle que décrite dans la RFC 6455.

Le délai d’attente par défaut pour l’établissement de la connexion est de 10 secondes afin d’éviter les attaques par déni de service ; il peut être personnalisé à l’aide de la méthode ` setHandshakeTimeout()`.

Voir également Exemple de serveur WebSocket et QWebSocket.

Documentation sur les types de membres

enum QWebSocketServer::SslMode

Indique si le serveur fonctionne en mode WSS (SecureMode) ou WS (NonSecureMode)

ConstanteValeurDescription
QWebSocketServer::SecureMode0Le serveur fonctionne en mode sécurisé (via WSS)
QWebSocketServer::NonSecureMode1Le serveur fonctionne en mode non sécurisé (via WS)

Documentation des fonctions membres

[explicit] QWebSocketServer::QWebSocketServer(const QString &serverName, QWebSocketServer::SslMode secureMode, QObject *parent = nullptr)

Crée un nouveau `QWebSocketServer` avec l'serverName` fourni. L'serverName sera utilisé lors de la phase de négociation HTTP pour identifier le serveur. Il peut être vide ; dans ce cas, aucun nom de serveur ne sera envoyé au client. Le paramètre secureMode indique si le serveur fonctionne via wss (SecureMode) ou via ws (NonSecureMode).

parent est transmis au constructeur QObject.

[override virtual noexcept] QWebSocketServer::~QWebSocketServer()

Supprime l'objet ` QWebSocketServer `. Si le serveur est à l'écoute de connexions, le socket est automatiquement fermé. Toutes les requêtes client ` QWebSocket` encore en file d'attente sont fermées et supprimées.

Voir aussi close().

[signal] void QWebSocketServer::acceptError(QAbstractSocket::SocketError socketError)

Ce signal est émis lorsque l'acceptation d'une nouvelle connexion génère une erreur. Le paramètre ` socketError ` décrit le type d'erreur qui s'est produite.

Voir également pauseAccepting() et resumeAccepting().

[signal, since 6.2] void QWebSocketServer::alertReceived(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)

QWebSocketServer émet ce signal si un message d'alerte a été reçu d'un pair. ` level ` indique si l'alerte était fatale ou s'il s'agissait d'un avertissement. ` type ` est le code expliquant pourquoi l'alerte a été envoyée. Lorsqu'une description textuelle du message d'alerte est disponible, elle est fournie dans ` description`.

Remarque : ce signal est principalement destiné à des fins d’information et de débogage et ne nécessite aucune gestion particulière au sein de l’application. Si l’alerte était fatale, le backend sous-jacent la gérera et fermera la connexion.

Remarque : tous les backendsne prennentpas en charge cette fonctionnalité.

Cette fonction a été introduite dans Qt 6.2.

Voir également alertSent(), QSsl::AlertLevel et QSsl::AlertType.

[signal, since 6.2] void QWebSocketServer::alertSent(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)

QWebSocketServer émet ce signal si un message d'alerte a été envoyé à un pair. level indique s'il s'agissait d'un avertissement ou d'une erreur fatale. type fournit le code du message d'alerte. Lorsqu'une description textuelle du message d'alerte est disponible, elle est fournie dans description.

Remarque : ce signal est principalement informatif et peut être utilisé à des fins de débogage ; en règle générale, il ne nécessite aucune action de la part de l’application.

Remarque : tous les backendsne prennentpas en charge cette fonctionnalité.

Cette fonction a été introduite dans Qt 6.2.

Voir également alertReceived(), QSsl::AlertLevel et QSsl::AlertType.

void QWebSocketServer::close()

Ferme le serveur. Le serveur n'attendra plus les connexions entrantes.

[signal] void QWebSocketServer::closed()

Ce signal est émis lorsque le serveur a fermé sa connexion.

Voir également close().

QWebSocketProtocol::CloseCode QWebSocketServer::error() const

Renvoie un code d'erreur correspondant à la dernière erreur survenue. Si aucune erreur ne s'est produite, la valeur « QWebSocketProtocol::CloseCodeNormal » est renvoyée.

Voir également errorString().

QString QWebSocketServer::errorString() const

Renvoie une description lisible par l'utilisateur de la dernière erreur survenue. Si aucune erreur ne s'est produite, une chaîne vide est renvoyée.

Voir également serverError().

void QWebSocketServer::handleConnection(QTcpSocket *socket) const

Convertit une socket TCP en WebSocket.

L'objet ` QWebSocketServer ` prendra en charge l'objet `socket` et le supprimera le moment venu.

[signal, since 6.2] void QWebSocketServer::handshakeInterruptedOnError(const QSslError &error)

QWebSocketServer émet ce signal si une erreur de vérification de certificat ( error ) a été détectée et si la notification précoce des erreurs a été activée dans ` QSslConfiguration`.

Cette fonction a été introduite dans Qt 6.2.

Voir également sslErrors() et QSslConfiguration::setHandshakeMustInterruptOnError().

std::chrono::milliseconds QWebSocketServer::handshakeTimeout() const

Renvoie le délai d'expiration de la procédure d'établissement de connexion pour les nouvelles connexions, en millisecondes.

La valeur par défaut est de 10 secondes. Si un pair met plus de temps à terminer la négociation de connexion, sa connexion est fermée.

Voir également setHandshakeTimeout() et handshakeTimeoutMS().

int QWebSocketServer::handshakeTimeoutMS() const

Renvoie le délai d'expiration de la procédure d'établissement de connexion pour les nouvelles connexions, en millisecondes.

La valeur par défaut est de 10 secondes. Si un pair met plus de temps à terminer la négociation, sa connexion est fermée.

Voir également setHandshakeTimeout() et handshakeTimeout().

bool QWebSocketServer::hasPendingConnections() const

Renvoie « true » si le serveur a des connexions en attente ; sinon, renvoie « false ».

Voir également nextPendingConnection() et setMaxPendingConnections().

bool QWebSocketServer::isListening() const

Renvoie « true » si le serveur est actuellement à l'écoute des connexions entrantes ; sinon, renvoie « false ». En cas d'échec de la mise à l'écoute, la fonction error() renverra la raison de l'échec.

Voir également ` listen()` et ` error()`.

bool QWebSocketServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)

Indique au serveur d'écouter les connexions entrantes sur l'adresse address et le port port. Si port vaut 0, un port est choisi automatiquement. Si address vaut QHostAddress::Any, le serveur écoutera sur toutes les interfaces réseau.

Renvoie « true » en cas de succès ; sinon, renvoie « false ».

Voir également isListening().

int QWebSocketServer::maxPendingConnections() const

Renvoie le nombre maximal de connexions acceptées en attente. La valeur par défaut est 30.

Voir également setMaxPendingConnections() et hasPendingConnections().

[signal] void QWebSocketServer::newConnection()

Ce signal est émis chaque fois qu'une nouvelle connexion est disponible.

Voir également hasPendingConnections() et nextPendingConnection().

[virtual] QWebSocket *QWebSocketServer::nextPendingConnection()

Renvoie la connexion en attente suivante sous la forme d’un objet ` QWebSocket ` connecté. La fonction ` QWebSocketServer ` ne prend pas possession de l’objet ` QWebSocket ` renvoyé. Il incombe à l’appelant de supprimer explicitement l’objet lorsqu’il ne sera plus utilisé, faute de quoi une fuite de mémoire se produira. La valeur `nullptr` est renvoyée si cette fonction est appelée alors qu’il n’y a aucune connexion en attente.

Remarque : l’objet QWebSocket renvoyé ne peut pas être utilisé depuis un autre thread.

Voir aussi hasPendingConnections().

[signal] void QWebSocketServer::originAuthenticationRequired(QWebSocketCorsAuthenticator *authenticator)

Ce signal est émis lorsqu’une nouvelle connexion est demandée. Le slot associé à ce signal doit indiquer si l’origine (qui peut être déterminée par l’appel à la fonction `origin()`) est autorisée dans l’objet ` authenticator ` (en appelant la fonction ` setAllowed()`).

Si aucun slot n’est connecté à ce signal, toutes les origines seront acceptées par défaut.

Remarque : il n’est pas possible d’utiliser une QueuedConnection pour se connecter à ce signal, car la connexion aboutira toujours.

void QWebSocketServer::pauseAccepting()

Suspend les nouvelles connexions entrantes. Les connexions en attente resteront dans la file d'attente.

Voir également resumeAccepting().

[signal] void QWebSocketServer::peerVerifyError(const QSslError &error)

QWebSocketServer peut émettre ce signal à plusieurs reprises au cours de la négociation SSL, avant que le chiffrement ne soit établi, pour signaler qu’une erreur s’est produite lors de la vérification de l’identité du pair. L’ error e indique généralement que QWebSocketServer n’est pas en mesure d’identifier le pair de manière sécurisée.

Ce signal vous alerte rapidement en cas de problème. En vous connectant à ce signal, vous pouvez choisir manuellement de rompre la connexion depuis l’intérieur du slot connecté avant que la négociation ne soit terminée. Si aucune action n’est entreprise, ` QWebSocketServer ` émettra alors ` QWebSocketServer::sslErrors()` ().

Voir également sslErrors().

[signal] void QWebSocketServer::preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)

QWebSocketServer émet ce signal lorsqu'il négocie un ensemble de chiffrement PSK ; une authentification PSK est alors requise.

Lorsqu’il utilise le PSK, le client doit envoyer au serveur une identité valide et une clé pré-partagée valide pour que la négociation SSL puisse se poursuivre. Les applications peuvent fournir ces informations dans un slot lié à ce signal, en remplissant l’objet ` authenticator ` transmis selon leurs besoins.

Remarque : ignorer ce signal ou ne pas fournir les informations d’identification requises entraînera l’échec de la négociation et, par conséquent, l’interruption de la connexion.

Remarque : l’objet authenticator appartient au socket et ne doit pas être supprimé par l’application.

Voir également QSslPreSharedKeyAuthenticator et QSslSocket::preSharedKeyAuthenticationRequired().

QNetworkProxy QWebSocketServer::proxy() const

Renvoie le proxy réseau de ce serveur. Par défaut, QNetworkProxy::DefaultProxy est utilisé.

Voir aussi setProxy().

void QWebSocketServer::resumeAccepting()

Reprend l'acceptation de nouvelles connexions.

Voir aussi pauseAccepting().

QWebSocketServer::SslMode QWebSocketServer::secureMode() const

Renvoie le mode sécurisé dans lequel le serveur fonctionne.

Voir également QWebSocketServer() et SslMode.

QHostAddress QWebSocketServer::serverAddress() const

Renvoie l'adresse du serveur si celui-ci est à l'écoute ; sinon, renvoie QHostAddress::Null.

Voir également serverPort() et listen().

[signal] void QWebSocketServer::serverError(QWebSocketProtocol::CloseCode closeCode)

Ce signal est émis lorsqu'une erreur survient lors de l'établissement d'une connexion WebSocket. Le paramètre closeCode décrit le type d'erreur qui s'est produite

Voir également errorString().

QString QWebSocketServer::serverName() const

Renvoie le nom du serveur utilisé pendant la phase d'établissement de la connexion HTTP.

Voir également setServerName().

quint16 QWebSocketServer::serverPort() const

Renvoie le port du serveur si celui-ci est à l'écoute ; sinon, renvoie 0.

Voir également serverAddress() et listen().

QUrl QWebSocketServer::serverUrl() const

Renvoie une URL que les clients peuvent utiliser pour se connecter à ce serveur si celui-ci est à l'écoute. Dans le cas contraire, une URL non valide est renvoyée.

Voir également serverPort(), serverAddress() et listen().

void QWebSocketServer::setHandshakeTimeout(std::chrono::milliseconds msec)

Définit le délai d'expiration de la procédure d'établissement de connexion pour les nouvelles connexions à msec millisecondes.

Par défaut, ce délai est fixé à 10 secondes. Si un pair met plus de temps à terminer la négociation, sa connexion est fermée. Vous pouvez passer une valeur négative (par exemple -1) pour désactiver le délai d'expiration.

Voir également handshakeTimeout() et handshakeTimeoutMS().

void QWebSocketServer::setHandshakeTimeout(int msec)

Il s'agit d'une fonction surchargée.

void QWebSocketServer::setMaxPendingConnections(int numConnections)

Définit le nombre maximal de connexions acceptées en attente sur numConnections. WebSocketServer n'acceptera pas plus de numConnections connexions entrantes avant l'appel de nextPendingConnection(). Par défaut, la limite est de 30 connexions en attente.

QWebSocketServer Émettra le signal error() avec le code de fermeture QWebSocketProtocol::CloseCodeAbnormalDisconnection lorsque le nombre maximal de connexions aura été atteint. La négociation WebSocket échouera et la socket sera fermée.

Voir également maxPendingConnections() et hasPendingConnections().

void QWebSocketServer::setProxy(const QNetworkProxy &networkProxy)

Définit le proxy réseau explicite de ce serveur sur networkProxy.

Pour désactiver l'utilisation d'un proxy, utilisez le type de proxy QNetworkProxy::NoProxy:

server->setProxy(QNetworkProxy::NoProxy);

Voir également proxy().

void QWebSocketServer::setServerName(const QString &serverName)

Définit le nom du serveur qui sera utilisé pendant la phase d'établissement de la connexion HTTP sur la valeur indiquée serverName. La valeur serverName peut être vide ; dans ce cas, un nom de serveur vide sera envoyé au client. Les clients déjà connectés ne seront pas informés de ce changement ; seuls les nouveaux clients qui se connecteront verront ce nouveau nom.

Voir également serverName().

bool QWebSocketServer::setSocketDescriptor(qintptr socketDescriptor)

Définit le descripteur de socket que ce serveur doit utiliser pour écouter les connexions entrantes sur socketDescriptor.

Renvoie true si la socket est correctement configurée ; sinon, renvoie false. La socket est supposée être en état d’écoute.

Voir également socketDescriptor() et isListening().

void QWebSocketServer::setSslConfiguration(const QSslConfiguration &sslConfiguration)

Définit la configuration SSL de QWebSocketServer sur sslConfiguration. Cette méthode n'a aucun effet si QWebSocketServer fonctionne en mode non sécurisé (QWebSocketServer::NonSecureMode).

Voir également sslConfiguration() et SslMode.

[since 6.4] void QWebSocketServer::setSupportedSubprotocols(const QStringList &protocols)

Définit la liste des protocoles pris en charge par le serveur sur protocols.

Cette fonction a été introduite dans Qt 6.4.

Voir également supportedSubprotocols().

qintptr QWebSocketServer::socketDescriptor() const

Renvoie le descripteur de socket natif utilisé par le serveur pour écouter les requêtes entrantes, ou -1 si le serveur n'est pas en mode d'écoute. Si le serveur utilise QNetworkProxy, il se peut que le descripteur renvoyé ne soit pas utilisable avec les fonctions de socket natives.

Voir également setSocketDescriptor() et isListening().

QSslConfiguration QWebSocketServer::sslConfiguration() const

Renvoie la configuration SSL utilisée par QWebSocketServer. Si le serveur ne fonctionne pas en mode sécurisé (QWebSocketServer::SecureMode), cette méthode renvoie QSslConfiguration::defaultConfiguration().

Voir également setSslConfiguration(), SslMode et QSslConfiguration::defaultConfiguration().

[signal] void QWebSocketServer::sslErrors(const QList<QSslError> &errors)

QWebSocketServer émet ce signal après la négociation SSL pour signaler qu'une ou plusieurs erreurs se sont produites lors de la vérification de l'identité du pair.

Ces erreurs indiquent généralement qu’ QWebSocketServer est incapable d’identifier le correspondant de manière sécurisée. À moins qu’une action ne soit entreprise, la connexion sera interrompue après l’émission de ce signal.

errors contient une ou plusieurs erreurs qui empêchent ` QSslSocket ` de vérifier l'identité du pair.

Voir également peerVerifyError() et sslErrorsOccurred().

[signal, since 6.11] void QWebSocketServer::sslErrorsOccurred(QSslSocket *socket, const QList<QSslError> &errors)

QWebSocketServer émet ce signal après la négociation SSL pour signaler qu’une ou plusieurs erreurs se sont produites lors de la vérification de l’identité du pair.

Ces erreurs indiquent généralement qu'socket est incapable d'identifier le pair de manière sécurisée. À moins qu'une action ne soit entreprise, la connexion sera interrompue après l'émission de ce signal.

errors contient une ou plusieurs erreurs qui empêchent ` QSslSocket ` de vérifier l’identité du pair.

Si vous souhaitez poursuivre la connexion malgré les erreurs survenues, vous devez appeler la fonction ` QSslSocket::ignoreSslErrors()` depuis un slot connecté à ce signal. Si vous avez besoin d'accéder à la liste des erreurs ultérieurement, vous pouvez appeler la fonction ` QSslSocket::sslHandshakeErrors()`.

Remarque : vous ne pouvez pas utiliser ` Qt::QueuedConnection ` lors de la connexion à ce signal, sinon l'appel de ` QSslSocket::ignoreSslErrors()` n'aura aucun effet.

Cette fonction a été introduite dans Qt 6.11.

Voir également peerVerifyError() et sslErrors().

[since 6.4] QStringList QWebSocketServer::supportedSubprotocols() const

Renvoie la liste des protocoles pris en charge par le serveur.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi ` setSupportedSubprotocols()`.

QList<QWebSocketProtocol::Version> QWebSocketServer::supportedVersions() const

Renvoie une liste des versions de WebSocket prises en charge par ce serveur.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.