En esta página

QWebSocketServer Class

Implementa un servidor basado en WebSocket. Más...

Cabecera: #include <QWebSocketServer>
CMake: find_package(Qt6 REQUIRED COMPONENTS WebSockets)
target_link_libraries(mytarget PRIVATE Qt6::WebSockets)
qmake: QT += websockets
Hereda: QObject

Tipos Públicos

enum SslMode { SecureMode, NonSecureMode }

Funciones Públicas

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

Señales

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)

Descripción detallada

Esta modelado a partir de QTcpServer, y se comporta igual. Por lo tanto, si sabes como usar QTcpServer, sabes como usar QWebSocketServer. Esta clase hace posible aceptar conexiones WebSocket entrantes. Puedes especificar el puerto o hacer que QWebSocketServer escoja uno automáticamente. Puede escuchar en una dirección específica o en todas las direcciones de la máquina. Llame a listen() para que el servidor escuche las conexiones entrantes.

La señal newConnection() es emitida cada vez que un cliente se conecta al servidor. Llame a nextPendingConnection() para aceptar la conexión pendiente como una conexión QWebSocket. La función devuelve un puntero a un QWebSocket en QAbstractSocket::ConnectedState que puede utilizar para comunicarse con el cliente.

Si se produce un error, serverError() devuelve el tipo de error, y se puede llamar a errorString() para obtener una descripción legible por humanos de lo ocurrido.

Cuando se está a la escucha de conexiones, la dirección y el puerto en el que el servidor está a la escucha están disponibles como serverAddress() y serverPort().

Llamar a close() hace que QWebSocketServer deje de escuchar conexiones entrantes.

QWebSocketServer actualmente no soporta Extensiones WebSocket.

Nota: Cuando se trabaja con certificados autofirmados, el bug 594502 de Firefox impide a Firefox conectarse a un servidor WebSocket seguro. Para solucionar este problema, vaya primero al servidor WebSocket seguro utilizando HTTPS. FireFox indicará que el certificado no es válido. A partir de aquí, se puede añadir el certificado a las excepciones. Después de esto, la conexión WebSockets segura debería funcionar.

QWebSocketServer solo soporta la versión 13 del protocolo WebSocket, como se indica en el RFC 6455.

Hay un tiempo de espera por defecto de 10 segundos para evitar la denegación de servicio, que puede ser personalizado usando setHandshakeTimeout().

Véase también Ejemplo de Servidor Web Socket y QWebSocket.

Documentación de tipos de miembros

enum QWebSocketServer::SslMode

Indica si el servidor opera sobre wss (SecureMode) o ws (NonSecureMode)

ConstanteValorDescripción
QWebSocketServer::SecureMode0El servidor opera en modo seguro (sobre wss)
QWebSocketServer::NonSecureMode1El servidor opera en modo no seguro (sobre ws)

Documentación de las funciones miembro

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

Construye un nuevo QWebSocketServer con la dirección serverName. El serverName sera usado en la fase de handshake HTTP para identificar al servidor. Puede estar vacio, en cuyo caso no se enviara ningun nombre de servidor al cliente. El parámetro secureMode indica si el servidor opera sobre wss (SecureMode) o sobre ws (NonSecureMode).

parent se pasa al constructor QObject.

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

Destruye el objeto QWebSocketServer. Si el servidor está escuchando conexiones, el socket se cierra automáticamente. Cualquier cliente QWebSocketque aún esté en cola se cierra y se elimina.

Véase también close().

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

Esta señal se emite cuando la aceptación de una nueva conexión da lugar a un error. El parámetro socketError describe el tipo de error que se ha producido.

Véase también pauseAccepting() y resumeAccepting().

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

QWebSocketServer emite esta señal si se ha recibido un mensaje de alerta de un par. level indica si la alerta era fatal o era una advertencia. type es el código que explica por qué se envió la alerta. Cuando se dispone de una descripción textual del mensaje de alerta, se proporciona en description.

Nota: La señal se utiliza principalmente con fines informativos y de depuración y no requiere ninguna manipulación en la aplicación. Si la alerta era fatal, el backend subyacente la gestionará y cerrará la conexión.

Nota: No todos los backends soportan esta funcionalidad.

Esta función se introdujo en Qt 6.2.

Véase también alertSent(), QSsl::AlertLevel, y QSsl::AlertType.

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

QWebSocketServer emite esta señal si se ha enviado un mensaje de alerta a un par. level describe si se trata de una advertencia o de un error fatal. type proporciona el código del mensaje de alerta. Cuando se dispone de una descripción textual del mensaje de alerta, se proporciona en description.

Nota: Esta señal es principalmente informativa y puede utilizarse con fines de depuración, normalmente no requiere ninguna acción por parte de la aplicación.

Nota: No todos los backends soportan esta funcionalidad.

Esta función se introdujo en Qt 6.2.

Ver también alertReceived(), QSsl::AlertLevel, y QSsl::AlertType.

void QWebSocketServer::close()

Cierra el servidor. El servidor dejará de escuchar conexiones entrantes.

[signal] void QWebSocketServer::closed()

Esta señal se emite cuando el servidor cierra su conexión.

Véase también close().

QWebSocketProtocol::CloseCode QWebSocketServer::error() const

Devuelve un código de error para el último error ocurrido. Si no se ha producido ningún error, se devuelve QWebSocketProtocol::CloseCodeNormal.

Véase también errorString().

QString QWebSocketServer::errorString() const

Devuelve una descripción legible del último error que se ha producido. Si no se ha producido ningún error, se devuelve una cadena vacía.

Véase también serverError().

void QWebSocketServer::handleConnection(QTcpSocket *socket) const

Actualiza un tcp socket a websocket.

El objeto QWebSocketServer tomará posesión del objeto socket y lo borrará cuando sea apropiado.

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

QWebSocketServer emite esta señal si se ha encontrado una verificación de certificado error y si se ha activado la notificación anticipada de errores en QSslConfiguration.

Esta función se introdujo en Qt 6.2.

Véase también sslErrors() y QSslConfiguration::setHandshakeMustInterruptOnError().

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

Devuelve el tiempo de espera para nuevas conexiones en milisegundos.

El valor predeterminado es 10 segundos. Si un peer utiliza más tiempo para completar el handshake su conexión se cierra.

Véase también setHandshakeTimeout() y handshakeTimeoutMS().

int QWebSocketServer::handshakeTimeoutMS() const

Devuelve el tiempo de espera para nuevas conexiones en milisegundos.

El valor predeterminado es 10 segundos. Si un peer utiliza más tiempo para completar el handshake su conexión se cierra.

Véase también setHandshakeTimeout() y handshakeTimeout().

bool QWebSocketServer::hasPendingConnections() const

Devuelve true si el servidor tiene conexiones pendientes; en caso contrario devuelve false.

Véase también nextPendingConnection() y setMaxPendingConnections().

bool QWebSocketServer::isListening() const

Devuelve true si el servidor está actualmente a la escucha de conexiones entrantes; en caso contrario devuelve false. Si la escucha falla, error() devolverá la razón.

Véase también listen() y error().

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

Indica al servidor que escuche las conexiones entrantes en la dirección address y el puerto port. Si port es 0, se elige un puerto automáticamente. Si address es QHostAddress::Any, el servidor escuchará en todas las interfaces de red.

Devuelve true en caso de éxito; en caso contrario devuelve false.

Véase también isListening().

int QWebSocketServer::maxPendingConnections() const

Devuelve el número máximo de conexiones aceptadas pendientes. El valor por defecto es 30.

Véase también setMaxPendingConnections() y hasPendingConnections().

[signal] void QWebSocketServer::newConnection()

Esta señal se emite cada vez que hay una nueva conexión disponible.

Véase también hasPendingConnections() y nextPendingConnection().

[virtual] QWebSocket *QWebSocketServer::nextPendingConnection()

Devuelve la siguiente conexión pendiente como un objeto QWebSocket conectado. QWebSocketServer no se apropia del objeto QWebSocket devuelto. Depende de la persona que llama para eliminar el objeto explícitamente cuando ya no se va a utilizar, de lo contrario se producirá una fuga de memoria. nullptr se devuelve si esta función se llama cuando no hay conexiones pendientes.

Nota: El objeto QWebSocket devuelto no puede ser utilizado desde otro hilo.

Véase también hasPendingConnections().

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

Esta señal se emite cuando se solicita una nueva conexión. La ranura conectada a esta señal debe indicar si el origen (que puede determinarse mediante la llamada a origin()) está permitido en el objeto authenticator (emitiendo setAllowed()).

Si no se conecta ninguna ranura a esta señal, se aceptarán todos los orígenes por defecto.

Nota: No es posible utilizar una QueuedConnection para conectarse a esta señal, ya que la conexión siempre tendrá éxito.

void QWebSocketServer::pauseAccepting()

Pone en pausa las nuevas conexiones entrantes. Las conexiones en cola permanecerán en cola.

Véase también resumeAccepting().

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

QWebSocketServer puede emitir esta señal varias veces durante el handshake SSL, antes de que se haya establecido el cifrado, para indicar que se ha producido un error al establecer la identidad del peer. La error suele ser una indicación de que QWebSocketServer es incapaz de identificar de forma segura al peer.

Esta señal te proporciona una indicación temprana de que algo va mal. Al conectarte a esta señal, puedes elegir manualmente cortar la conexión desde dentro de la ranura conectada antes de que el apretón de manos se haya completado. Si no se realiza ninguna acción, QWebSocketServer procederá a emitir QWebSocketServer::sslErrors().

Véase también sslErrors().

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

QWebSocketServer emite esta señal cuando negocia un ciphersuite PSK, y por lo tanto se requiere entonces una autenticación PSK.

Cuando se utiliza PSK, el cliente debe enviar al servidor una identidad válida y una clave precompartida válida, para que el handshake SSL pueda continuar. Las aplicaciones pueden proporcionar esta información en una ranura conectada a esta señal, rellenando el objeto authenticator pasado según sus necesidades.

Nota: Ignorar esta señal, o no proporcionar las credenciales requeridas, causará que el handshake falle, y por lo tanto que la conexión sea abortada.

Nota: El objeto authenticator es propiedad del socket y no debe ser borrado por la aplicación.

Véase también QSslPreSharedKeyAuthenticator y QSslSocket::preSharedKeyAuthenticationRequired().

QNetworkProxy QWebSocketServer::proxy() const

Devuelve el proxy de red para este servidor. Por defecto se usa QNetworkProxy::DefaultProxy.

Véase también setProxy().

void QWebSocketServer::resumeAccepting()

Reanuda la aceptación de nuevas conexiones.

Véase también pauseAccepting().

QWebSocketServer::SslMode QWebSocketServer::secureMode() const

Devuelve el modo seguro en el que se está ejecutando el servidor.

Véase también QWebSocketServer() y SslMode.

QHostAddress QWebSocketServer::serverAddress() const

Devuelve la dirección del servidor si éste está a la escucha de conexiones; en caso contrario devuelve QHostAddress::Null.

Véase también serverPort() y listen().

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

Esta señal se emite cuando se produce un error durante la configuración de una conexión WebSocket. El parámetro closeCode describe el tipo de error que se ha producido.

Véase también errorString().

QString QWebSocketServer::serverName() const

Devuelve el nombre del servidor que se utiliza durante la fase de handshake http.

Véase también setServerName().

quint16 QWebSocketServer::serverPort() const

Devuelve el puerto del servidor si el servidor está escuchando conexiones; en caso contrario devuelve 0.

Véase también serverAddress() y listen().

QUrl QWebSocketServer::serverUrl() const

Devuelve una URL que los clientes pueden utilizar para conectarse a este servidor si el servidor está a la escucha de conexiones. En caso contrario, se devuelve una URL inválida.

Véase también serverPort(), serverAddress(), y listen().

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

Establece el tiempo de espera para nuevas conexiones en msec milisegundos.

Por defecto se establece en 10 segundos. Si un peer utiliza más tiempo para completar el handshake, su conexión se cierra. Puedes pasar un valor negativo (por ejemplo, -1) para desactivar el tiempo de espera.

Véase también handshakeTimeout() y handshakeTimeoutMS().

void QWebSocketServer::setHandshakeTimeout(int msec)

Se trata de una función sobrecargada.

void QWebSocketServer::setMaxPendingConnections(int numConnections)

Establece el número máximo de conexiones pendientes aceptadas en numConnections. WebSocketServer no aceptará más de numConnections conexiones entrantes antes de que se llame a nextPendingConnection(). Por defecto, el límite es de 30 conexiones pendientes.

QWebSocketServer emitirá la señal error() con el código de cierre QWebSocketProtocol::CloseCodeAbnormalDisconnection cuando se haya alcanzado el máximo de conexiones. El handshake WebSocket fallará y el socket se cerrará.

Véase también maxPendingConnections() y hasPendingConnections().

void QWebSocketServer::setProxy(const QNetworkProxy &networkProxy)

Establece el proxy de red explícito para este servidor en networkProxy.

Para desactivar el uso de un proxy, utilice el tipo de proxy QNetworkProxy::NoProxy:

server->setProxy(QNetworkProxy::NoProxy);

Véase también proxy().

void QWebSocketServer::setServerName(const QString &serverName)

Establece el nombre del servidor que se utilizará durante la fase HTTP handshake en la dirección serverName. serverName puede estar vacío, en cuyo caso se enviará al cliente un nombre de servidor vacío. Los clientes ya conectados no serán notificados de este cambio, sólo los clientes recién conectados verán este nuevo nombre.

Véase también serverName().

bool QWebSocketServer::setSocketDescriptor(qintptr socketDescriptor)

Establece el descriptor de socket que este servidor debe usar cuando escucha conexiones entrantes a socketDescriptor.

Devuelve true si el socket se ha configurado correctamente; en caso contrario devuelve false. Se asume que el socket está en estado de escucha.

Véase también socketDescriptor() y isListening().

void QWebSocketServer::setSslConfiguration(const QSslConfiguration &sslConfiguration)

Establece la configuración SSL para QWebSocketServer en sslConfiguration. Este método no tiene efecto si QWebSocketServer se ejecuta en modo no seguro (QWebSocketServer::NonSecureMode).

Véase también sslConfiguration() y SslMode.

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

Establece la lista de protocolos soportados por el servidor en protocols.

Esta función se introdujo en Qt 6.4.

Véase también supportedSubprotocols().

qintptr QWebSocketServer::socketDescriptor() const

Devuelve el descriptor de socket nativo que el servidor usa para escuchar instrucciones entrantes, o -1 si el servidor no está escuchando. Si el servidor está usando QNetworkProxy, el descriptor devuelto puede no ser utilizable con funciones de socket nativas.

Véase también setSocketDescriptor() y isListening().

QSslConfiguration QWebSocketServer::sslConfiguration() const

Devuelve la configuración SSL utilizada por el QWebSocketServer. Si el servidor no se está ejecutando en modo seguro (QWebSocketServer::SecureMode), este método devuelve QSslConfiguration::defaultConfiguration().

Véase también setSslConfiguration(), SslMode, y QSslConfiguration::defaultConfiguration().

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

QWebSocketServer emite esta señal después del handshake SSL para indicar que se han producido uno o más errores mientras se establecía la identidad del peer.

Los errores son normalmente una indicación de que QWebSocketServer es incapaz de identificar de forma segura al peer. A menos que se tome alguna acción, la conexión se interrumpirá después de que se haya emitido esta señal.

errors contiene uno o más errores que impiden a QSslSocket verificar la identidad del par.

Véase también peerVerifyError() y sslErrorsOccurred().

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

QWebSocketServer emite esta señal después del handshake SSL para indicar que se han producido uno o más errores mientras se establecía la identidad del peer.

Los errores son normalmente una indicación de que socket es incapaz de identificar de forma segura al peer. A menos que se tome alguna acción, la conexión se interrumpirá después de que se haya emitido esta señal.

errors contiene uno o más errores que impiden a QSslSocket verificar la identidad del peer.

Si desea continuar la conexión a pesar de los errores que se han producido, debe llamar a QSslSocket::ignoreSslErrors() desde dentro de una ranura conectada a esta señal. Si necesitas acceder a la lista de errores en un momento posterior, puedes llamar a QSslSocket::sslHandshakeErrors().

Nota: No puede utilizar Qt::QueuedConnection cuando se conecte a esta señal, o llamar a QSslSocket::ignoreSslErrors() no tendrá ningún efecto.

Esta función se introdujo en Qt 6.11.

Véase también peerVerifyError() y sslErrors().

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

Devuelve la lista de protocolos soportados por el servidor.

Esta función se introdujo en Qt 6.4.

Véase también setSupportedSubprotocols().

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

Devuelve una lista de las versiones de WebSocket que soporta este servidor.

© 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.