Spec-Zone.ru › Qt 5.9

Класс QWebSocketServer

Реализует сервер на основе протокола WebSocket. Подробнее...

Заголовок: #include <QWebSocketServer>
qmake: QT += websockets
С тех пор: Qt 5.3
Наследует: QObject
  • Список всех членов, включая унаследованные

Типы public

Перечисление SslMode { SecureMode, NonSecureMode }

Функции public

QWebSocketServer(const QString &serverName, SslMode secureMode, QObject *parent = Q_NULLPTR)
virtual ~QWebSocketServer()
void close()
QWebSocketProtocol::CloseCode error() const
QString errorString() const
void handleConnection(QTcpSocket *socket) 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()
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
  • 32 public functions inherited from QObject

Сигналы

void acceptError(QAbstractSocket::SocketError socketError)
void closed()
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)
  • 2 signals inherited from QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 public slot, унаследованный от QObject
  • 11 статических public членов, унаследованных от QObject
  • 9 protected функций, унаследованных от QObject

Подробное описание

Реализует сервер на основе протокола WebSocket.

Он создан по аналогии с QTcpServer и ведет себя так же. Поэтому, если вы знаете, как использовать QTcpServer, вы знаете, как использовать QWebSocketServer. Этот класс позволяет принимать входящие подключения WebSocket. Вы можете указать порт или позволить QWebSocketServer выбрать его автоматически. Вы можете прослушивать по определенному адресу или всем адресам компьютера. Вызовите listen(), чтобы сервер стал прослушивать входящие подключения.

Затем сигнал newConnection() генерируется каждый раз, когда клиент подключается к серверу. Вызовите nextPendingConnection(), чтобы принять ожидающее подключение как подключенный QWebSocket. Функция возвращает указатель на QWebSocket в состоянии QAbstractSocket::ConnectedState, который вы можете использовать для связи с клиентом.

Если произошла ошибка, serverError() возвращает тип ошибки, а errorString() может быть вызван для получения удобочитаемого описания произошедшего.

При прослушивании подключений адрес и порт, на которых сервер прослушивает, доступны как serverAddress() и serverPort().

Вызов close() заставляет QWebSocketServer прекратить прослушивание входящих подключений.

QWebSocketServer в настоящее время не поддерживает WebSocket Extensions и WebSocket Subprotocols.

Примечание: При работе с самозаверенными сертификатами ошибка Firefox bug 594502 препятствует подключению Firefox к защищенному серверу WebSocket. Чтобы обойти эту проблему, сначала перейдите на защищенный сервер WebSocket с помощью HTTPS. FireFox укажет, что сертификат недействителен. Отсюда сертификат можно добавить в исключения. После этого соединение защищенных WebSocket должно работать.

QWebSocketServer поддерживает только версию 13 протокола WebSocket, как указано в RFC 6455.

См. также Пример сервера WebSocket и QWebSocket.

Документация по типу членов

enum 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().

void QWebSocketServer::handleConnection(QTcpSocket *socket) const

Обновляет tcp-сокет до веб-сокета.

Объект QWebSocketServer принимает владение объектом сокета и удаляет его при необходимости.

Эта функция была добавлена в Qt 5.9.

bool QWebSocketServer::hasPendingConnections() const

Возвращает true, если сервер имеет ожидающие подключения; в противном случае возвращает false.

См. также nextPendingConnection() и setMaxPendingConnections().

bool QWebSocketServer::isListening() const

Возвращает true, если сервер в настоящее время прослушивает входящие подключения; в противном случае возвращает false. Если прослушивание завершается неудачей, error() вернёт причину.

См. также listen() и 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().

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

QWebSocketServer излучает этот сигнал, когда он договаривается о PSK-шифровании, а поэтому требуется PSK-аутентификация.

При использовании PSK клиент должен отправить серверу действительный идентификатор и действительный предварительно согласованный ключ, чтобы SSL-рукопожатие продолжилось. Приложения могут предоставить эту информацию в слоте, подключенном к этому сигналу, заполнив переданный объект authenticator в соответствии со своими потребностями.

Примечание: Игнорирование этого сигнала или невозможность предоставить необходимые учётные данные приведет к сбою рукопожатия, а значит, к прерыванию соединения.

Примечание: Объект authenticator принадлежит сокету и не должен удаляться приложением.

Эта функция была добавлена в Qt 5.8.

См. также QSslPreSharedKeyAuthenticator и QSslSocket::preSharedKeyAuthenticationRequired().

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/qt-5.9/qwebsocketserver.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API