QWebSocketServer Class

WebSocketベースのサーバーを実装します。詳細...

ヘッダ #include <QWebSocketServer>
CMake: find_package(Qt6 REQUIRED COMPONENTS WebSockets)
target_link_libraries(mytarget PRIVATE Qt6::WebSockets)
qmake: QT += websockets
継承: QObject

パブリックな型

enum SslMode { SecureMode, NonSecureMode }

パブリック関数

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

シグナル

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)

詳細説明

QWebSocketServer はQTcpServer をモデルにしており、同じように動作します。したがって、QTcpServer の使い方を知っていれば、QWebSocketServer の使い方を知っていることになります。このクラスは、着信する WebSocket 接続を受け付けることができます。ポートを指定することも、QWebSocketServer に自動的に選択させることもできます。特定のアドレスでリッスンすることも、すべてのマシンのアドレスでリッスンすることもできます。listen() を呼び出すと、サーバーは着信接続をリッスンします。

newConnection() シグナルは、クライアントがサーバに接続するたびに発行されます。nextPendingConnection() を呼び出すと、保留中の接続がQWebSocket に接続されたことになる。この関数は、クライアントとの通信に使用できるQAbstractSocket::ConnectedStateQWebSocket へのポインタを返します。

エラーが発生した場合、serverError() はエラーのタイプを返し、errorString() を呼び出すと、何が発生したかを人間が読める形で説明することができる。

接続をリッスンしている場合、サーバーがリッスンしているアドレスとポートは、serverAddress() およびserverPort() として取得できます。

close() を呼び出すと、QWebSocketServer は着信接続のリッスンを停止します。

QWebSocketServer は現在WebSocket Extensions をサポートしていません。

注意: 自己署名証明書を使用している場合、Firefox のバグ 594502によって安全な WebSocket サーバーに接続できません。この問題を回避するには、まずHTTPSを使用して安全なWebSocketサーバーをブラウズします。FireFoxは証明書が無効であることを示します。ここから、証明書を例外に追加することができます。これで、セキュアなWebSocket接続が機能するようになります。

QWebSocketServerは、RFC 6455で概説されているWebSocketプロトコルのバージョン13のみをサポートしています。

サービス拒否を回避するため、デフォルトの接続ハンドシェイクタイムアウトは 10 秒です。これはsetHandshakeTimeout() を使用してカスタマイズできます。

WebSocket Server ExampleおよびQWebSocketも参照

メンバー・タイプのドキュメント

enum QWebSocketServer::SslMode

サーバが wss (SecureMode) と ws (NonSecureMode) のどちらで動作するかを示す。

定数説明
QWebSocketServer::SecureMode0サーバがセキュアモードで動作している (wss 経由)
QWebSocketServer::NonSecureMode1サーバは非セキュアモード(ws経由)で動作します。

メンバー関数ドキュメント

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

与えられたserverName で新しい QWebSocketServer を構築します。serverName は HTTP ハンドシェイクフェーズでサーバを識別するために使用されます。この場合、サーバ名はクライアントに送信されません。secureMode パラメータは、サーバが wss (SecureMode) と ws (NonSecureMode) のどちらで動作するかを示します。

parent は コンストラクタに渡されます。QObject

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

QWebSocketServer オブジェクトを破棄する。サーバーが接続をリッスンしている場合、ソケットは自動的に閉じられる。まだキューに入っているクライアントQWebSocketはすべて閉じられ、削除される。

close()も参照のこと

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

このシグナルは、新規接続の受け入れ時にエラーが発生した場合に発行される。socketError パラメータには、発生したエラーのタイプが記述される。

pauseAccepting() およびresumeAccepting()も参照のこと

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

QWebSocketServer level 、アラートが致命的なものなのか警告なのかを伝える。 は、アラートが送信された理由を説明するコードである。アラートメッセージのテキストによる説明がある場合は、 。type description

注意: このシグナルは主に情報提供とデバッグのためのもので、アプリケーションで処理する必要はありません。アラートが致命的であった場合、基礎となるバックエンドはそれを処理し、接続を閉じます。

注意: 全てのバックエンドがこの機能をサポートしているわけではありません。

この関数は Qt 6.2 で導入されました。

alertSent()、QSsl::AlertLevelQSsl::AlertTypeも参照してください

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

QWebSocketServer level 、警告か致命的エラーかを記述する。 、警告メッセージのコードを与える。アラートメッセージのテキストによる説明がある場合は、 。type description

注意: このシグナルはほとんどが情報提供であり、デバッグ目的で使用することができます。

注意: すべてのバックエンドがこの機能をサポートしているわけではありません。

この関数は Qt 6.2 で導入されました。

alertReceived()、QSsl::AlertLevelQSsl::AlertTypeも参照してください

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

tcpsocket をウェブソケットにアップグレードする。

QWebSocketServer オブジェクトがソケットオブジェクトの所有権を持ち、適切なときに削除する。

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

QWebSocketServer 証明書検証 が見つかり、かつ で早期エラー報告が有効になっている場合、このシグナルを発します。error QSslConfiguration

この関数は Qt 6.2 で導入されました。

sslErrors() およびQSslConfiguration::setHandshakeMustInterruptOnError()も参照してください

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

新規接続のハンドシェイクタイムアウトをミリ秒単位で返します。

デフォルトは 10 秒。ピアがハンドシェイクの完了にそれ以上の時間をかけた場合、その接続は切断されます。

setHandshakeTimeout() およびhandshakeTimeoutMS()も参照

int QWebSocketServer::handshakeTimeoutMS() const

新規接続のハンドシェイクタイムアウトをミリ秒単位で返します。

デフォルトは 10 秒。ピアがハンドシェイクの完了にそれ以上の時間をかけた場合、その接続は切断されます。

setHandshakeTimeout() およびhandshakeTimeout()も参照

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 の場合、ポートは自動的に選択されます。addressQHostAddress::Any の場合、サーバはすべてのネットワーク・インタフェースを listen します。

成功するとtrueを返し、失敗するとfalseを返します。

isListening()も参照

int QWebSocketServer::maxPendingConnections() const

保留中の接続の最大数を返します。デフォルトは 30 である。

setMaxPendingConnections() およびhasPendingConnections()も参照

[signal] void QWebSocketServer::newConnection()

このシグナルは、新しい接続が利用可能になるたびに発せられる。

hasPendingConnections() およびnextPendingConnection()も参照のこと

[virtual] QWebSocket *QWebSocketServer::nextPendingConnection()

QWebSocket QWebSocketServer は、返された オブジェクトの所有権を持たない。オブジェクトが使用されなくなったときに明示的に削除するかどうかは、呼び出し側次第です。そうしないと、メモリ・リークが発生します。保留中の接続がないときにこの関数が呼び出されると、nullptrが返されます。QWebSocket

注意: 返された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 ハンドシェイクの間、暗号化が確立する前にこのシグナルを何度か発して、相手の ID を確立する際にエラーが発生したことを示すことができる。 は通常、 がピアを安全に識別できないことを示す。error QWebSocketServer

このシグナルは、何か問題が発生したときに、その兆候を早期に示してくれる。このシグナルに接続することで、ハンドシェイクが完了する前に、接続されたスロットの内部から手動で接続を切断することを選択できる。何もアクションを起こさなければ、QWebSocketServerQWebSocketServer::sslErrors() の発信に進む。

sslErrors()も参照のこと

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

QWebSocketServer は PSK 暗号スイートとネゴシエートするときにこのシグナルを発するので、 PSK 認証が必要になる。

PSKを使う場合、クライアントはSSLハンドシェイクを続けるために、有効なIDと有効な事前共有鍵をサーバーに送らなければなりません。アプリケーションはこのシグナルに接続されたスロットに、渡されたauthenticator オブジェクトを必要に応じて入力することで、この情報を提供することができます。

注意: このシグナルを無視したり、必要な認証情報を提供しなかったりすると、ハンドシェイクが失敗し、接続が中断されます。

注意 :authenticator オブジェクトはソケットが所有するので、アプリケーションから削除してはならない。

QSslPreSharedKeyAuthenticatorQSslSocket::preSharedKeyAuthenticationRequired()も参照のこと

QNetworkProxy QWebSocketServer::proxy() const

このサーバのネットワークプロキシを返します。デフォルトではQNetworkProxy::DefaultProxy が使用される。

setProxy()も参照

void QWebSocketServer::resumeAccepting()

新しい接続の受け付けを再開する。

pauseAccepting()も参照のこと

QWebSocketServer::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::setHandshakeTimeout(std::chrono::milliseconds msec)

新規接続のハンドシェイクタイムアウトをmsec ミリ秒に設定する。

デフォルトでは10秒に設定されています。ピアがハンドシェイクの完了にそれ以上の時間を使った場合、その接続はクローズされます。タイムアウトを無効にするには、負の値 (-1 など) を渡します。

handshakeTimeout() およびhandshakeTimeoutMS()も参照

void QWebSocketServer::setHandshakeTimeout(int msec)

これはオーバーロードされた関数である。

void QWebSocketServer::setMaxPendingConnections(int numConnections)

numConnections WebSocketServer は、 () が呼び出される前に、 を超える着信接続を受け付けない。デフォルトでは、保留中の接続数の上限は30である。nextPendingConnection numConnections

QWebSocketServer 最大接続数に達すると、 close コードとともに () シグナルが発行されます。WebSocket のハンドシェイクは失敗し、ソケットはクローズされる。QWebSocketProtocol::CloseCodeAbnormalDisconnection error

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(qintptr socketDescriptor)

このサーバがsocketDescriptor への着信接続をリスンする際に使用するソケットディスクリプタを設定する。

ソケットの設定に成功した場合は true を返し、失敗した場合は false を返す。ソケットはリッスン中であると仮定される。

socketDescriptor() およびisListening()も参照

void QWebSocketServer::setSslConfiguration(const QSslConfiguration &sslConfiguration)

QWebSocketServer の SSL 構成をsslConfiguration に設定する。QWebSocketServer が非セキュアモード (QWebSocketServer::NonSecureMode) で実行されている場合、このメソッドは効果を持たない。

sslConfiguration() およびSslModeも参照のこと

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

サーバがサポートしているプロトコルのリストをprotocols に設定します。

この関数は Qt 6.4 で導入されました。

supportedSubprotocols()も参照してください

qintptr QWebSocketServer::socketDescriptor() const

サーバが着信指示を待ち受けるために使用するネイティブソケットディスクリプタを返す。サーバがQNetworkProxy を使用している場合、返されたディスクリプタはネイティブソケット関数で使用できないかもしれない。

setSocketDescriptor() およびisListening()も参照のこと

QSslConfiguration QWebSocketServer::sslConfiguration() const

QWebSocketServerサーバがセキュアモードで動作していない場合 (QWebSocketServer::SecureMode)、このメソッドはQSslConfiguration::defaultConfiguration() を返す。

setSslConfiguration()、SslMode 、およびQSslConfiguration::defaultConfiguration()も参照

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

QWebSocketServer は、SSL ハンドシェイクの後にこのシグナルを発して、ピアの ID を確立する間に 1 つ以上のエラーが発生したことを示す。エラーは通常、 がピアを安全に識別できないことを示す。何らかの処置が取られない限り、このシグナルが発せられた後、接続は切断されます。QWebSocketServer

errors には、 がピアの ID を確認できないエラーが 1 つ以上含まれている。QSslSocket

peerVerifyError()も参照のこと

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

サーバがサポートしているプロトコルのリストを返します。

この関数は Qt 6.4 で導入されました。

setSupportedSubprotocols()も参照してください

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

このサーバーがサポートしている WebSocket のバージョンの一覧を返します。

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