Класс QWebSocketServer
Реализует сервер на основе WebSocket. Подробнее...
| Заголовок: | #include <QWebSocketServer> |
| qmake: | QT += websockets |
| С момента: | Qt 5.3 |
| Наследует: | QObject |
Открытые типы
| перечисление | SslMode { SecureMode, NonSecureMode } |
Открытые функции
| QWebSocketServer(const QString &serverName, SslMode secureMode, QObject *parent = Q_NULLPTR) | |
| виртуальный | ~QWebSocketServer() |
| void | close() |
| QWebSocketProtocol::CloseCode | error() const |
| QString | errorString() const |
| bool | hasPendingConnections() const |
| bool | isListening() const |
| bool | listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0) |
| int | maxPendingConnections() const |
| виртуальный QWebSocket * | nextPendingConnection() |
| void | pauseAccepting() |
| QNetworkProxy | proxy() const |
| void | resumeAccepting() |
| SslMode | secureMode() const |
| QHostAddress | serverAddress() const |
| QString | serverName() const |
| quint16 | serverPort() const |
| QUrl | serverUrl() const |
| void | setMaxPendingConnections(int numConnections) |
| void | setProxy(const QNetworkProxy &networkProxy) |
| void | setServerName(const QString &serverName) |
| bool | setSocketDescriptor(int socketDescriptor) |
| void | setSslConfiguration(const QSslConfiguration &sslConfiguration) |
| int | socketDescriptor() const |
| QSslConfiguration | sslConfiguration() const |
| QList<QWebSocketProtocol::Version> | supportedVersions() const |
- 31 открытая функция, унаследованная от QObject
Сигналы
| void | acceptError(QAbstractSocket::SocketError socketError) |
| void | closed() |
| void | newConnection() |
| void | originAuthenticationRequired(QWebSocketCorsAuthenticator *authenticator) |
| void | peerVerifyError(const QSslError &error) |
| void | serverError(QWebSocketProtocol::CloseCode closeCode) |
| void | sslErrors(const QList<QSslError> &errors) |
- 2 сигнала, унаследованные от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 11 статических открытых членов, унаследованных от QObject
- 9 защищённых функций, унаследованных от QObject
Подробное описание
Реализует сервер на основе WebSocket.
Он смоделирован по образцу QTcpServer и ведет себя аналогично. Поэтому, если вы знаете, как использовать QTcpServer, вы знаете, как использовать QWebSocketServer. Этот класс позволяет принимать входящие подключения WebSocket. Вы можете указать порт или позволить QWebSocketServer выбрать его автоматически. Вы можете прослушивать определенный адрес или все адреса машины. Вызовите listen(), чтобы сервер прослушивал входящие подключения.
Затем сигнал newConnection() генерируется каждый раз, когда клиент подключается к серверу. Вызовите nextPendingConnection(), чтобы принять ожидающее подключение как подключенный QWebSocket. Функция возвращает указатель на QWebSocket в состоянии QAbstractSocket::ConnectedState, который вы можете использовать для связи с клиентом.
Если произошла ошибка, serverError() возвращает тип ошибки, а errorString() можно вызвать, чтобы получить удобочитаемое описание произошедшего.
При прослушивании подключений адрес и порт, на которых прослушивает сервер, доступны как serverAddress() и serverPort().
Вызов close() заставляет QWebSocketServer прекратить прослушивание входящих подключений.
QWebSocketServer в настоящее время не поддерживает расширения WebSocket и подпротоколы WebSocket.
Примечание: При работе с самоподписанными сертификатами ошибка Firefox bug 594502 препятствует подключению Firefox к защищённому серверу WebSocket. Чтобы обойти эту проблему, сначала перейдите на защищённый сервер WebSocket с помощью HTTPS. Firefox укажет, что сертификат недействителен. Отсюда сертификат можно добавить в исключения. После этого подключение защищённых WebSocket должно работать.
QWebSocketServer поддерживает только версию 13 протокола WebSocket, как указано в RFC 6455.
См. также Пример сервера WebSocket и QWebSocket.
Документация по типу члена
перечисление QWebSocketServer::SslMode
Указывает, работает ли сервер по wss (SecureMode) или ws (NonSecureMode)
| Константа | Значение | Описание |
|---|---|---|
QWebSocketServer::SecureMode |
0 |
Сервер работает в защищённом режиме (по wss) |
QWebSocketServer::NonSecureMode |
1 |
Сервер работает в незащищённом режиме (по ws) |
Документация по функциям-членам
QWebSocketServer::QWebSocketServer(const QString &serverName, SslMode secureMode, QObject *parent = Q_NULLPTR)
Создаёт новый объект QWebSocketServer с заданным именем сервера serverName. Имя сервера serverName будет использовано на стадии рукопожатия HTTP для идентификации сервера. Оно может быть пустым, в этом случае клиенту будет отправлено пустое имя сервера. Параметр secureMode указывает, работает ли сервер по протоколу wss (SecureMode) или ws (NonSecureMode).
parent передаётся в конструктор QObject.
[virtual] QWebSocketServer::~QWebSocketServer()
Удаляет объект QWebSocketServer. Если сервер принимает подключения, сокет автоматически закрывается. Любые клиентские QWebSocket объекты, которые ещё находятся в очереди, закрываются и удаляются.
См. также close().
[signal] void QWebSocketServer::acceptError(QAbstractSocket::SocketError socketError)
Этот сигнал испускается, когда приём нового подключения приводит к ошибке. Параметр socketError описывает тип возникшей ошибки.
См. также pauseAccepting() и resumeAccepting().
void QWebSocketServer::close()
Закрывает сервер. Сервер больше не будет ожидать входящие подключения.
[signal] void QWebSocketServer::closed()
Этот сигнал испускается, когда сервер закрыл своё подключение.
См. также close().
QWebSocketProtocol::CloseCode QWebSocketServer::error() const
Возвращает код ошибки для последней произошедшей ошибки. Если ошибка не произошла, возвращается QWebSocketProtocol::CloseCodeNormal.
См. также errorString().
QString QWebSocketServer::errorString() const
Возвращает удобочитаемое описание последней произошедшей ошибки. Если ошибка не произошла, возвращается пустая строка.
См. также serverError().
bool QWebSocketServer::hasPendingConnections() const
Возвращает true, если у сервера есть ожидающие подключения; иначе возвращает false.
См. также nextPendingConnection() и setMaxPendingConnections().
bool QWebSocketServer::isListening() const
Возвращает true, если сервер в данный момент ожидает входящие подключения; иначе возвращает false. Если прослушивание завершается неудачей, error() вернёт причину.
bool QWebSocketServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
Указывает серверу прослушивать входящие подключения по адресу address и порту port. Если port равен 0, порт выбирается автоматически. Если address равен QHostAddress::Any, сервер будет прослушивать все сетевые интерфейсы.
Возвращает true при успехе; иначе возвращает false.
См. также isListening().
int QWebSocketServer::maxPendingConnections() const
Возвращает максимальное количество ожидающих подключений. По умолчанию значение равно 30.
См. также setMaxPendingConnections() и hasPendingConnections().
[signal] void QWebSocketServer::newConnection()
Этот сигнал испускается каждый раз, когда доступно новое подключение.
См. также hasPendingConnections() и nextPendingConnection().
[virtual] QWebSocket *QWebSocketServer::nextPendingConnection()
Возвращает следующее ожидающее подключение в виде объекта QWebSocket. QWebSocketServer не берёт на себя ответственность за возвращаемый объект QWebSocket. Ответственность за явное удаление объекта, когда он больше не нужен, ложится на вызывающий код, иначе произойдёт утечка памяти. Q_NULLPTR возвращается, если эта функция вызывается, когда нет ожидающих подключений.
Примечание: возвращаемый объект QWebSocket нельзя использовать из другого потока.
См. также hasPendingConnections().
[signal] void QWebSocketServer::originAuthenticationRequired(QWebSocketCorsAuthenticator *authenticator)
Этот сигнал испускается, когда запрашивается новое подключение. Слот, подключенный к этому сигналу, должен указать, разрешена ли область происхождения (которая может быть определена с помощью вызова origin()), в объекте authenticator (выполнив setAllowed()).
Если к этому сигналу не подключен ни один слот, все области происхождения будут приниматься по умолчанию.
Примечание: Невозможно использовать QueuedConnection для подключения к этому сигналу, так как подключение всегда будет успешным.
void QWebSocketServer::pauseAccepting()
Приостанавливает приём новых подключений. Ожидающие подключения останутся в очереди.
См. также resumeAccepting().
[signal] void QWebSocketServer::peerVerifyError(const QSslError &error)
QWebSocketServer может испускать этот сигнал несколько раз во время рукопожатия SSL, прежде чем будет установлено шифрование, чтобы указать, что произошла ошибка при установлении подлинности клиента. Ошибка error обычно указывает, что QWebSocketServer не может надёжно идентифицировать клиента.
Этот сигнал предоставляет вам раннее уведомление о проблеме. Подключившись к этому сигналу, вы можете вручную выбрать разрыв соединения внутри подключенного слота, прежде чем рукопожатие будет завершено. Если никаких действий не будет предпринято, QWebSocketServer продолжит испускать QWebSocketServer::sslErrors().
См. также sslErrors().
QNetworkProxy QWebSocketServer::proxy() const
Возвращает сетевой прокси для этого сервера. По умолчанию используется QNetworkProxy::DefaultProxy.
См. также setProxy().
void QWebSocketServer::resumeAccepting()
Возобновляет приём новых подключений.
См. также pauseAccepting().
SslMode QWebSocketServer::secureMode() const
Возвращает режим безопасности, в котором работает сервер.
См. также QWebSocketServer() и SslMode.
QHostAddress QWebSocketServer::serverAddress() const
Возвращает адрес сервера, если сервер принимает подключения; иначе возвращает QHostAddress::Null.
См. также serverPort() и listen().
[signal] void QWebSocketServer::serverError(QWebSocketProtocol::CloseCode closeCode)
Этот сигнал испускается, когда при установке подключения WebSocket возникает ошибка. Параметр closeCode описывает тип возникшей ошибки.
См. также errorString().
QString QWebSocketServer::serverName() const
Возвращает имя сервера, используемое во время фазы рукопожатия http.
См. также setServerName().
quint16 QWebSocketServer::serverPort() const
Возвращает порт сервера, если сервер прослушивает соединения; в противном случае возвращает 0.
См. также serverAddress() и listen().
QUrl QWebSocketServer::serverUrl() const
Возвращает URL, который клиенты могут использовать для подключения к этому серверу, если сервер прослушивает соединения. В противном случае возвращается недействительный URL.
См. также serverPort(), serverAddress() и listen().
void QWebSocketServer::setMaxPendingConnections(int numConnections)
Устанавливает максимальное количество ожидающих принятых соединений в numConnections. WebSocketServer примет не более numConnections входящих соединений, прежде чем вызовется nextPendingConnection(). По умолчанию предел составляет 30 ожидающих соединений.
QWebSocketServer будет испускать сигнал error() с кодом закрытия QWebSocketProtocol::CloseCodeAbnormalDisconnection, когда максимальное количество соединений будет достигнуто. Установление WebSocket-соединения завершится ошибкой, и сокет будет закрыт.
См. также maxPendingConnections() и hasPendingConnections().
void QWebSocketServer::setProxy(const QNetworkProxy &networkProxy)
Устанавливает явную сетевую прокси для этого сервера в networkProxy.
Чтобы отключить использование прокси, используйте тип прокси QNetworkProxy::NoProxy:
server->setProxy(QNetworkProxy::NoProxy);
См. также proxy().
void QWebSocketServer::setServerName(const QString &serverName)
Устанавливает имя сервера, которое будет использоваться на этапе HTTP-установления соединения, в заданное serverName. serverName может быть пустым, в этом случае клиенту будет отправлено пустое имя сервера. Существующие подключенные клиенты не будут уведомлены об этом изменении, только новые подключающиеся клиенты увидят это новое имя.
См. также serverName().
bool QWebSocketServer::setSocketDescriptor(int socketDescriptor)
Устанавливает дескриптор сокета, который должен использоваться этим сервером при прослушивании входящих соединений, в socketDescriptor.
Возвращает true, если сокет установлен успешно; в противном случае возвращает false. Предполагается, что сокет находится в состоянии прослушивания.
См. также socketDescriptor() и isListening().
void QWebSocketServer::setSslConfiguration(const QSslConfiguration &sslConfiguration)
Устанавливает конфигурацию SSL для QWebSocketServer в sslConfiguration. Этот метод не имеет эффекта, если QWebSocketServer работает в режиме без шифрования (QWebSocketServer::NonSecureMode).
См. также sslConfiguration() и SslMode.
int QWebSocketServer::socketDescriptor() const
Возвращает дескриптор системного сокета, используемый сервером для прослушивания входящих запросов, или -1, если сервер не прослушивает. Если сервер использует QNetworkProxy, возвращаемый дескриптор может быть не пригодным для использования с функциями системных сокетов.
См. также setSocketDescriptor() и isListening().
QSslConfiguration QWebSocketServer::sslConfiguration() const
Возвращает конфигурацию SSL, используемую QWebSocketServer. Если сервер не работает в защищённом режиме (QWebSocketServer::SecureMode), этот метод возвращает QSslConfiguration::defaultConfiguration().
См. также setSslConfiguration(), SslMode и QSslConfiguration::defaultConfiguration().
[signal] void QWebSocketServer::sslErrors(const QList<QSslError> &errors)
QWebSocketServer испускает этот сигнал после завершения SSL-установления соединения, чтобы указать, что произошла одна или несколько ошибок при установлении личности клиента. Ошибки, как правило, указывают на то, что QWebSocketServer не может безопасно идентифицировать клиента. Если не предпринять никаких действий, соединение будет прервано после испускания этого сигнала.
errors содержит одну или несколько ошибок, которые препятствуют QSslSocket в проверке личности клиента.
См. также peerVerifyError().
QList<QWebSocketProtocol::Version> QWebSocketServer::supportedVersions() const
Возвращает список версий WebSocket, поддерживаемых этим сервером.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qwebsocketserver.html