QWebSocket Class
WebSocketプロトコルに対応したTCPソケットを実装します。詳細...
| ヘッダー: | #include <QWebSocket> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS WebSockets) target_link_libraries(mytarget PRIVATE Qt6::WebSockets) |
| qmake: | QT += websockets |
| 継承元: | QObject |
パブリック関数
| QWebSocket(const QString &origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent = nullptr) | |
| virtual | ~QWebSocket() override |
| void | abort() |
| qint64 | bytesToWrite() const |
| QWebSocketProtocol::CloseCode | closeCode() const |
| QString | closeReason() const |
(since 6.2) void | continueInterruptedHandshake() |
| QAbstractSocket::SocketError | error() const |
| QString | errorString() const |
| bool | flush() |
(since 6.4) QWebSocketHandshakeOptions | handshakeOptions() const |
| void | ignoreSslErrors(const QList<QSslError> &errors) |
| bool | isValid() const |
| QHostAddress | localAddress() const |
| quint16 | localPort() const |
| const QMaskGenerator * | maskGenerator() const |
| quint64 | maxAllowedIncomingFrameSize() const |
| quint64 | maxAllowedIncomingMessageSize() const |
| QString | origin() const |
| quint64 | outgoingFrameSize() const |
| QAbstractSocket::PauseModes | pauseMode() const |
| QHostAddress | peerAddress() const |
| QString | peerName() const |
| quint16 | peerPort() const |
| QNetworkProxy | proxy() const |
| qint64 | readBufferSize() const |
| QNetworkRequest | request() const |
| QUrl | requestUrl() const |
| QString | resourceName() const |
| void | resume() |
| qint64 | sendBinaryMessage(const QByteArray &data) |
| qint64 | sendTextMessage(const QString &message) |
| void | setMaskGenerator(const QMaskGenerator *maskGenerator) |
| void | setMaxAllowedIncomingFrameSize(quint64 maxAllowedIncomingFrameSize) |
| void | setMaxAllowedIncomingMessageSize(quint64 maxAllowedIncomingMessageSize) |
| void | setOutgoingFrameSize(quint64 outgoingFrameSize) |
| void | setPauseMode(QAbstractSocket::PauseModes pauseMode) |
| void | setProxy(const QNetworkProxy &networkProxy) |
| void | setReadBufferSize(qint64 size) |
| void | setSslConfiguration(const QSslConfiguration &sslConfiguration) |
| QSslConfiguration | sslConfiguration() const |
| QAbstractSocket::SocketState | state() const |
(since 6.4) QString | subprotocol() const |
| QWebSocketProtocol::Version | version() const |
パブリックスロット
| void | close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString()) |
| void | ignoreSslErrors() |
| void | open(const QNetworkRequest &request) |
| void | open(const QUrl &url) |
(since 6.4) void | open(const QNetworkRequest &request, const QWebSocketHandshakeOptions &options) |
(since 6.4) void | open(const QUrl &url, const QWebSocketHandshakeOptions &options) |
| void | ping(const QByteArray &payload = QByteArray()) |
シグナル
| void | aboutToClose() |
(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) |
(since 6.6) void | authenticationRequired(QAuthenticator *authenticator) |
| void | binaryFrameReceived(const QByteArray &frame, bool isLastFrame) |
| void | binaryMessageReceived(const QByteArray &message) |
| void | bytesWritten(qint64 bytes) |
| void | connected() |
| void | disconnected() |
(since 6.5) void | errorOccurred(QAbstractSocket::SocketError error) |
(since 6.2) void | handshakeInterruptedOnError(const QSslError &error) |
(since 6.2) void | peerVerifyError(const QSslError &error) |
| void | pong(quint64 elapsedTime, const QByteArray &payload) |
| void | preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator) |
| void | proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) |
| void | readChannelFinished() |
| void | sslErrors(const QList<QSslError> &errors) |
| void | stateChanged(QAbstractSocket::SocketState state) |
| void | textFrameReceived(const QString &frame, bool isLastFrame) |
| void | textMessageReceived(const QString &message) |
静的パブリックメンバー
| quint64 | maxIncomingFrameSize() |
| quint64 | maxIncomingMessageSize() |
| quint64 | maxOutgoingFrameSize() |
詳細な説明
WebSockets は、単一の TCP 接続を介して全二重通信チャネルを提供する Web 技術です。WebSocket プロトコルは、2011年に IETF によってRFC 6455として標準化されました。QWebSocket は、クライアントアプリケーションとサーバーアプリケーションの両方で使用できます。
このクラスは、QAbstractSocket をモデルにしています。
QWebSocketは現在、WebSocket拡張機能をサポートしていません。
QWebSocketは、RFC 6455に規定されているWebSocketプロトコルのバージョン13のみをサポートしています。
注:一部のプロキシは 、WebSocketハンドシェイク中に使用される特定のHTTPヘッダーを認識しません。その場合、非セキュアなWebSocket接続は失敗します。この問題を軽減する最善の方法は、セキュアな接続上でWebSocketを使用することです。
警告: マスクを生成するために 、この WebSocket の実装では、適度に安全なQRandomGenerator::global()->generate() 関数を使用しています。 適切なマスキングの重要性に関する詳細については、Lin-Shung Huang らによる「Talking to Yourself for Fun and Profit」を参照してください。上記の文書で言及されている攻撃に対する最善の対策は、セキュアな接続 (wss://) 上で QWebSocket を使用することです。 一般に、アプリケーション内の QWebSocket にサードパーティのスクリプトがアクセスできないよう、常に注意を払ってください。
QAbstractSocket 、QTcpSocket 、およびQWebSocket クライアントの例も参照してください 。
メンバ関数のドキュメント
[explicit] QWebSocket::QWebSocket(const QString &origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent = nullptr)
指定されたorigin 、使用するプロトコルのversion 、およびparent を用いて、新しいQWebSocketを作成します。
クライアントのorigin は、RFC 6454に規定されている通りです。(Webブラウザ以外のクライアントの場合、origin は必須ではありません(RFC 6455を参照)。)origin には改行文字を含めてはなりません。含んでいる場合、ハンドシェイクフェーズ中に接続が直ちに打ち切られます。
注:現在 、V13(RFC 6455)のみがサポートされています。
[override virtual noexcept] QWebSocket::~QWebSocket()
QWebSocket を破棄します。ソケットがまだ開いている場合はそれを閉じ、使用中のリソースをすべて解放します。
void QWebSocket::abort()
現在のソケットを中止し、ソケットをリセットします。close() とは異なり、この関数はソケットを直ちに閉じ、書き込みバッファに残っている未処理のデータを破棄します。
[signal] void QWebSocket::aboutToClose()
このシグナルは、ソケットが閉じられようとしているときに発行されます。ソケットが閉じられる前に実行する必要がある処理がある場合(たとえば、別のバッファに保存されているデータをデバイスに書き込む必要がある場合など)、このシグナルを接続してください。
close()も参照してください 。
[signal, since 6.2] void QWebSocket::alertReceived(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
QWebSocket ピアからアラートメッセージを受信した場合、このシグナルを発行します。level は、そのアラートが致命的なものか警告かを示します。type は、アラートが送信された理由を説明するコードです。アラートメッセージのテキストによる説明が利用可能な場合は、description にその内容が格納されます。
注:この シグナルは 主に情報提供およびデバッグを目的としており、アプリケーション側での処理は不要です。アラートが致命的なものである場合、基盤となるバックエンドがこれを処理し、接続を閉じます。
注: すべてのバックエンドがこの機能をサポートしているわけではありません 。
この関数は Qt 6.2 で導入されました。
関連項目: alertSent()、QSsl::AlertLevel 、およびQSsl::AlertType 。
[signal, since 6.2] void QWebSocket::alertSent(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
QWebSocket ピアにアラートメッセージが送信された場合、このシグナルを発行します。level には、それが警告か致命的なエラーかが記述されます。type には、アラートメッセージのコードが格納されます。アラートメッセージのテキストによる説明が利用可能な場合は、description にその内容が格納されます。
注:この シグナルは 主に情報提供を目的としており、デバッグに使用できます。通常、アプリケーション側での対応は不要です。
注: すべてのバックエンドがこの機能をサポートしているわけではありません 。
この関数は Qt 6.2 で導入されました。
関連項目: alertReceived()、QSsl::AlertLevel 、およびQSsl::AlertType 。
[signal, since 6.6] void QWebSocket::authenticationRequired(QAuthenticator *authenticator)
このシグナルは、サーバーが認証を要求した際に発せられます。その場合、認証を許可して接続を継続するには、authenticator オブジェクトに必要な詳細情報を入力する必要があります。
サーバーが認証を要求する可能性があることが分かっている場合は、QUrl::setUserName およびQUrl::setPassword を使用して、初期のQUrl にユーザー名とパスワードを設定できます。QWebSocket は、指定された認証情報を使用せずに1回だけ接続を試みます。
注: このシグナルへの接続に QueuedConnection を使用することはできません 。シグナルが戻る時点で認証情報に新しい情報が設定されていない場合、接続は失敗するからです。
この関数は Qt 6.6 で導入されました。
QAuthenticatorも参照してください 。
[signal] void QWebSocket::binaryFrameReceived(const QByteArray &frame, bool isLastFrame)
この信号は、バイナリフレームが受信されるたびに発信されます。frame にはデータが含まれており、isLastFrame は、これがメッセージ全体の最後のフレームであるかどうかを示します。
このシグナルを使用すると、メッセージ全体が到着するのを待つ代わりに、大きなメッセージをフレーム単位で処理することができます。
textFrameReceived()も参照してください 。
[signal] void QWebSocket::binaryMessageReceived(const QByteArray &message)
このシグナルは、バイナリメッセージを受信するたびに発生します。message には、受信したバイトが格納されています。
textMessageReceived()も参照してください 。
qint64 QWebSocket::bytesToWrite() const
書き込み待ちのバイト数を返します。これらのバイトは、制御がイベントループに戻ったとき、またはflush()が呼び出されたときに書き込まれます。
flushも参照してください 。
[signal] void QWebSocket::bytesWritten(qint64 bytes)
このシグナルは、データのペイロードがソケットに書き込まれるたびに発火します。bytes 引数には、このペイロードで書き込まれたバイト数が設定されます。
注:この シグナルの意味は、セキュアな WebSocket と非セキュアな WebSocket の両方で同じです。QSslSocket とは対照的に、bytesWritten() は、暗号化されたデータが実際に書き込まれた場合にのみ発行されます(QSslSocket::encryptedBytesWritten() を参照)。
close()も参照してください 。
[slot] void QWebSocket::close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString())
指定されたcloseCode およびreason を用いて、ソケットを正常に閉じます。
ソケットが閉じられる前に、書き込みバッファ内のデータはすべてフラッシュされます。closeCode は、閉じられる理由を示すQWebSocketProtocol::CloseCode であり、reason は、その理由をより詳細に説明します。 Closeフレームを含むすべての制御フレームは、125バイトに制限されています。このうち2バイトがcloseCode に使用されるため、reason の最大長は123バイトとなります!もしreason がこの制限を超えると、切り捨てられます。
QWebSocketProtocol::CloseCode QWebSocket::closeCode() const
ソケットが閉じられた理由を示すコードを返します。
QWebSocketProtocol::CloseCode およびcloseReason()も参照してください 。
QString QWebSocket::closeReason() const
ソケットが閉じられた理由を返します。
closeCode()も参照してください 。
[signal] void QWebSocket::connected()
接続が正常に確立された際に発行されます。接続が正常に確立されたとは、ソケットが接続され、ハンドシェイクが成功した状態を指します。
open() およびdisconnected()も参照してください 。
[since 6.2] void QWebSocket::continueInterruptedHandshake()
アプリケーションがhandshakeInterruptedOnError()シグナルを受信した後もハンドシェイクを完了させたい場合は、この関数を呼び出す必要があります。この呼び出しは、そのシグナルにアタッチされたスロット関数内から行う必要があります。シグナルとスロットの接続は直接である必要があります。
この関数は Qt 6.2 で導入されました。
handshakeInterruptedOnError() およびQSslConfiguration::setHandshakeMustInterruptOnError()も参照してください 。
[signal] void QWebSocket::disconnected()
ソケットの接続が切断されたときに発生します。
close() およびconnected()も参照してください 。
QAbstractSocket::SocketError QWebSocket::error() const
最後に発生したエラーのタイプを返します
errorString()も参照してください 。
[signal, since 6.5] void QWebSocket::errorOccurred(QAbstractSocket::SocketError error)
この信号は、エラーが発生した後に送信されます。
error パラメータは、発生したエラーの種類を表します。
QAbstractSocket::SocketError は登録済みのメタタイプではないため、キューに追加された接続については、Q_DECLARE_METATYPE() およびqRegisterMetaType() を使用して登録する必要があります。
この関数は Qt 6.5 で導入されました。
error() およびerrorString()も参照してください 。
QString QWebSocket::errorString() const
最後に発生したエラーについて、人間が理解しやすい説明を返します
error()も参照してください 。
bool QWebSocket::flush()
この関数は、ブロックすることなく、内部の書き込みバッファから可能な限り多くのデータを基になるネットワークソケットに書き込みます。データが書き込まれた場合は true を返し、そうでない場合は false を返します。QWebSocket にバッファされたデータの送信を直ちに開始させたい場合は、この関数を呼び出してください。正常に書き込まれたバイト数は、オペレーティングシステムによって異なります。ほとんどの場合、制御がイベントループに戻るとQWebSocket が自動的にデータの送信を開始するため、この関数を呼び出す必要はありません。
[signal, since 6.2] void QWebSocket::handshakeInterruptedOnError(const QSslError &error)
QWebSocket QSslConfiguration で早期エラー報告が有効になっており、かつ証明書検証エラーが検出された場合、このシグナルを発行します。アプリケーションは、 を検査し、ハンドシェイクを継続するか、それとも中止して相手側に警告メッセージを送信するかを判断する必要があります。シグナルとスロットの接続は直接でなければなりません。error
この関数は Qt 6.2 で導入されました。
continueInterruptedHandshake()、sslErrors()、およびQSslConfiguration::setHandshakeMustInterruptOnError()も参照してください 。
[since 6.4] QWebSocketHandshakeOptions QWebSocket::handshakeOptions() const
このソケットのオープンに使用されたハンドシェイクオプションを返します。
この関数は Qt 6.4 で導入されました。
[slot] void QWebSocket::ignoreSslErrors()
このスロットは、QWebSocket に対し、QWebSocket のハンドシェイクフェーズ中に発生したエラーを無視して接続を続行するよう指示します。ハンドシェイクフェーズ中にエラーが発生した場合でも接続を続行したい場合は、sslErrors()に接続されたスロットから、あるいはハンドシェイクフェーズが始まる前に、このスロットを呼び出す必要があります。 エラーへの対応として、あるいはハンドシェイクの前に、このスロットを呼び出さない場合、sslErrors() シグナルが発信された後に接続は切断されます。
警告: 必ず、 sslErrors() シグナルによって報告されたエラーをユーザーに確認させ、ユーザーから続行の許可が得られた場合にのみ、このメソッドを呼び出してください 。予期しないエラーが発生した場合は、接続を中止する必要があります。実際のエラーを確認せずにこのメソッドを呼び出すと、アプリケーションにセキュリティ上のリスクが生じる可能性が極めて高くなります。使用には細心の注意を払ってください!
注:この スロットは オーバーロードされています。このスロットに接続するには:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload<>(&QWebSocket::ignoreSslErrors));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket]() { receiver->ignoreSslErrors(); });関連項目: sslErrors()、QSslSocket::ignoreSslErrors()、およびQNetworkReply::ignoreSslErrors()。
void QWebSocket::ignoreSslErrors(const QList<QSslError> &errors)
この方法により、QWebSocket に、errors に記載されているエラーを無視するよう指示します。
なお、SSL エラーにおいて、期待される証明書を設定することができます。たとえば、自己署名証明書を使用しているサーバーに接続したい場合は、次のコードスニペットを参考にしてください:
QList<QSslCertificate> cert = QSslCertificate::fromPath(QLatin1String("server-certificate.pem"));
QSslError error(QSslError::SelfSignedCertificate, cert.at(0));
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);
QWebSocket socket;
socket.ignoreSslErrors(expectedSslErrors);
socket.open(QUrl(QStringLiteral("wss://myserver.at.home")));この関数を複数回呼び出すと、以前の呼び出しで渡されたエラーのリストが上書きされます。空のリストを引数としてこの関数を呼び出すことで、無視したいエラーのリストをクリアすることができます。
これはオーバーロードされた関数です。
sslErrors()も参照してください 。
bool QWebSocket::isValid() const
ソケットが読み取りおよび書き込みの準備ができている場合は `true ` を返し、そうでない場合は `false` を返します。
QHostAddress QWebSocket::localAddress() const
ローカルアドレスを返します
quint16 QWebSocket::localPort() const
ローカルポートを返します
const QMaskGenerator *QWebSocket::maskGenerator() const
このQWebSocket で現在使用されているマスクジェネレータを返します。
setMaskGenerator()も参照してください 。
quint64 QWebSocket::maxAllowedIncomingFrameSize() const
受信するWebSocketフレームの最大許容サイズを返します。
setMaxAllowedIncomingFrameSize()も参照してください 。
quint64 QWebSocket::maxAllowedIncomingMessageSize() const
受信するWebSocketメッセージの最大許容サイズを返します。
setMaxAllowedIncomingMessageSize()も参照してください 。
[static] quint64 QWebSocket::maxIncomingFrameSize()
このWebSocket実装において、受信WebSocketフレームのサポートされる最大サイズを返します。
[static] quint64 QWebSocket::maxIncomingMessageSize()
このWebSocket実装において、受信するWebSocketメッセージのサポートされる最大サイズを返します。
[static] quint64 QWebSocket::maxOutgoingFrameSize()
このWebSocket実装において、送信されるWebSocketフレームの最大サポートサイズを返します。
[slot] void QWebSocket::open(const QNetworkRequest &request)
指定されたrequest を使用して WebSocket 接続を開きます。
request の URL を使用して WebSocket 接続を開きます。リクエストに含まれるヘッダーは、WebSocket ハンドシェイクに必要なヘッダーとともに、アップグレードリクエストとしてサーバーに送信されます。
注:この スロットは オーバーロードされています。このスロットに接続するには:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload(&QWebSocket::open));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket](const QNetworkRequest &request) { receiver->open(request); }); [slot] void QWebSocket::open(const QUrl &url)
指定されたurl を使用してWebSocket接続を開きます。
URLに改行文字が含まれている場合(例:\r 、\n )、QAbstractSocket::ConnectionRefusedError をエラータイプとしてエラーシグナルが発信されます。
注:この スロットは オーバーロードされています。このスロットに接続するには:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload(&QWebSocket::open));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket](const QUrl &url) { receiver->open(url); }); [slot, since 6.4] void QWebSocket::open(const QNetworkRequest &request, const QWebSocketHandshakeOptions &options)
指定されたrequest およびoptions を使用して、WebSocket 接続を開きます。
request の URL は、WebSocket 接続を開くために使用されます。リクエストに含まれるヘッダーは、WebSocket ハンドシェイクに必要なヘッダーとともに、アップグレードリクエストとしてサーバーに送信されます。
サブプロトコルなどの WebSocket ハンドシェイクに関する追加オプションは、options で指定できます。
注:この スロットは オーバーロードされています。このスロットに接続するには:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload(&QWebSocket::open));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket](const QNetworkRequest &request, const QWebSocketHandshakeOptions &options) { receiver->open(request, options); }); この関数は Qt 6.4 で導入されました。
[slot, since 6.4] void QWebSocket::open(const QUrl &url, const QWebSocketHandshakeOptions &options)
指定されたurl およびoptions を使用して、WebSocket 接続を開きます。
URLに改行文字が含まれている場合(\r\n )、エラータイプとしてQAbstractSocket::ConnectionRefusedError を持つエラーシグナルが発行されます。
サブプロトコルなどの WebSocket ハンドシェイクに関する追加オプションは、options で指定できます。
注:この スロットは オーバーロードされています。このスロットに接続するには:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload(&QWebSocket::open));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket](const QUrl &url, const QWebSocketHandshakeOptions &options) { receiver->open(url, options); }); この関数はQt 6.4で導入されました。
QString QWebSocket::origin() const
現在の原点を返します。
quint64 QWebSocket::outgoingFrameSize() const
送信されるWebSocketフレームの最大サイズを返します。
setOutgoingFrameSize()も参照してください 。
QAbstractSocket::PauseModes QWebSocket::pauseMode() const
このソケットの一時停止モードを返します
setPauseMode()も参照してください 。
QHostAddress QWebSocket::peerAddress() const
ピアアドレスを返します
QString QWebSocket::peerName() const
peerName を返します
quint16 QWebSocket::peerPort() const
ピアポートを返します
[signal, since 6.2] void QWebSocket::peerVerifyError(const QSslError &error)
QWebSocket SSLハンドシェイク中、暗号化が確立される前に、このシグナルを数回発信し、相手側の身元確認中にエラーが発生したことを示すことがあります。error は通常、QWebSocket が相手側を確実に識別できないことを示しています。
このシグナルは、何か問題が発生した際の早期の兆候となります。このシグナルに接続することで、ハンドシェイクが完了する前に、connectedスロット内から手動で接続を切断する選択を行うことができます。何の措置も講じられない場合、QWebSocket はQWebSocket::sslErrors()を発行することになります。
この関数は Qt 6.2 で導入されました。
sslErrors()も参照してください 。
[slot] void QWebSocket::ping(const QByteArray &payload = QByteArray())
サーバーにpingを送信し、接続が維持されていることを示します。pingメッセージとともに、追加のpayload を送信することもできます。
payload のサイズは125バイトを超えてはなりません。それより大きい場合、payload は125バイトに切り詰められます。
注: QWebSocket およびQWebSocketServer は内部で ping 要求を処理します。つまり、これらは自動的に相手側に pong 応答を返します。
pong()も参照してください 。
[signal] void QWebSocket::pong(quint64 elapsedTime, const QByteArray &payload)
以前のpingに対する応答としてpongメッセージを受信した際に発行されます。elapsedTime には往復時間(ミリ秒単位)が、payload にはpingとともに送信されたオプションのペイロードが含まれます。
ping()も参照してください 。
[signal] void QWebSocket::preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
この信号は、SSL/TLSハンドシェイクでPSK暗号スイートがネゴシエートされ、その結果PSK認証が必要となる場合に発信されます。
PSK を使用する場合、SSL ハンドシェイクを継続させるためには、クライアントは有効な識別情報と有効な事前共有鍵をサーバーに送信する必要があります。アプリケーションは、このシグナルに接続されたスロット内で、渡された `authenticator ` オブジェクトを必要に応じて設定することで、この情報を提供できます。
注: このシグナルを無視したり 、必要な認証情報を提供しなかったりすると、ハンドシェイクが失敗し、接続が中断されます。
注: authenticator オブジェクトは WebSocketが所有しており、アプリケーションによって削除してはなりません。
関連項目: QSslPreSharedKeyAuthenticator およびQSslSocket::preSharedKeyAuthenticationRequired().
QNetworkProxy QWebSocket::proxy() const
現在設定されているプロキシを返します
setProxy()も参照してください 。
[signal] void QWebSocket::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
このシグナルは、認証を必要とするproxy が使用された際に発生することがあります。その場合、authenticator オブジェクトに必要な詳細情報を入力することで、認証を行い、接続を継続することができます。
注: このシグナルへの接続に QueuedConnection を使用することはできません 。シグナルが戻った時点で、認証オブジェクトに新しい情報が設定されていない場合、接続は失敗するからです。
「 QAuthenticator 」および「QNetworkProxy 」も参照してください 。
qint64 QWebSocket::readBufferSize() const
ソケットで使用されている読み取りバッファのサイズをバイト単位で返します。
setReadBufferSize()も参照してください 。
[signal] void QWebSocket::readChannelFinished()
このシグナルは、このデバイスで入力(読み取り)ストリームが閉じられたときに発生します。閉じられたことが検出されるとすぐに発生します。
close()も参照してください 。
QNetworkRequest QWebSocket::request() const
このソケットのオープンに使用された、または今後使用されるリクエストを返します。
QUrl QWebSocket::requestUrl() const
ソケットが接続されている、または接続しようとしているURLを返します。
QString QWebSocket::resourceName() const
現在アクセスされているリソースの名前を返します。
void QWebSocket::resume()
ソケットでのデータ転送を再開します。このメソッドは、ソケットが通知時に一時停止するように設定され、かつ通知が受信された後にのみ使用してください。現在サポートされている通知は、sslErrors() のみです。ソケットが一時停止状態でない場合にこのメソッドを呼び出すと、未定義の挙動を引き起こします。
pauseMode() およびsetPauseMode()も参照してください 。
qint64 QWebSocket::sendBinaryMessage(const QByteArray &data)
指定されたdata をバイナリメッセージとしてソケット経由で送信し、実際に送信されたバイト数を返します。
sendTextMessage()も参照してください 。
qint64 QWebSocket::sendTextMessage(const QString &message)
指定されたmessage をテキストメッセージとしてソケット経由で送信し、実際に送信されたバイト数を返します。
sendBinaryMessage()も参照してください 。
void QWebSocket::setMaskGenerator(const QMaskGenerator *maskGenerator)
マスクの作成に使用するジェネレータを `maskGenerator` に設定します。デフォルトの `QWebSocket ` ジェネレータは、`nullptr` を指定することでリセットできます。マスクのジェネレータは、接続が開いている間でも、いつでも変更可能です。
maskGenerator()も参照してください 。
void QWebSocket::setMaxAllowedIncomingFrameSize(quint64 maxAllowedIncomingFrameSize)
着信WebSocketフレームの最大許容サイズをmaxAllowedIncomingFrameSize に設定します。着信フレームがこの制限を超えた場合、相手との接続は切断されます。指定可能な範囲は0からmaxIncomingFrameSize()の間で、デフォルトはmaxIncomingFrameSize()です。この関数の目的は、仮想メモリの枯渇を防ぐことです。
maxAllowedIncomingFrameSize()も参照してください 。
void QWebSocket::setMaxAllowedIncomingMessageSize(quint64 maxAllowedIncomingMessageSize)
受信するWebSocketメッセージの最大許容サイズをmaxAllowedIncomingMessageSize に設定します。受信メッセージがこの制限を超えた場合、相手との接続は切断されます。指定可能な範囲は0からmaxIncomingMessageSize()の間で、デフォルトはmaxIncomingMessageSize()です。この関数の目的は、仮想メモリの枯渇を防ぐことです。
maxAllowedIncomingMessageSize()も参照してください 。
void QWebSocket::setOutgoingFrameSize(quint64 outgoingFrameSize)
送信されるWebSocketフレームの最大サイズをoutgoingFrameSize に設定します。指定可能な範囲は0からmaxOutgoingFrameSize()までで、デフォルトは512kBです。この関数の目的は、受信側の許容される最大フレームサイズに合わせて調整することです。
outgoingFrameSize()も参照してください 。
void QWebSocket::setPauseMode(QAbstractSocket::PauseModes pauseMode)
通知を受信した際に処理を一時停止するかどうかを制御します。pauseMode パラメータは、ソケットの処理を一時停止すべき条件を指定します。
現在サポートされている通知は、sslErrors() のみです。PauseOnSslErrors に設定すると、ソケット上のデータ転送が一時停止され、resume() を呼び出して明示的に再開する必要があります。デフォルトでは、このオプションは PauseNever に設定されています。このオプションは、サーバーに接続する前に呼び出す必要があります。そうしないと、未定義の挙動を引き起こします。
pauseMode() およびresume()も参照してください 。
void QWebSocket::setProxy(const QNetworkProxy &networkProxy)
プロキシを次のように設定します。networkProxy
proxy()も参照してください 。
void QWebSocket::setReadBufferSize(qint64 size)
QWebSocket の内部読み取りバッファのサイズをsize バイトに設定します。
バッファサイズが特定のサイズに制限されている場合、QWebSocket はこのサイズを超えるデータをバッファに格納しません。例外として、バッファサイズが 0 の場合、読み取りバッファに制限がなく、受信したすべてのデータがバッファに格納されます。 これがデフォルトの設定です。このオプションは、特定の時点でのみデータを読み取る場合(たとえば、リアルタイムのストリーミングアプリケーションなど)や、ソケットが過剰なデータを受信して、最終的にアプリケーションのメモリ不足を招くのを防ぎたい場合に役立ちます。
readBufferSize()も参照してください 。
void QWebSocket::setSslConfiguration(const QSslConfiguration &sslConfiguration)
ソケットのSSL設定を、sslConfiguration の内容に設定します。
この関数は、ローカル証明書、暗号スイート、秘密鍵、およびCA証明書を、sslConfiguration に保存されているものとして設定します。SSL状態に関連するフィールドを設定することはできません。
sslConfiguration()も参照してください 。
QSslConfiguration QWebSocket::sslConfiguration() const
ソケットのSSL設定状態を返します。ソケットのデフォルトのSSL設定では、デフォルトの暗号スイートとデフォルトのCA証明書が使用され、ローカルの秘密鍵や証明書は使用されません。また、SSL設定には、予告なく変更される可能性のあるフィールドも含まれています。
setSslConfiguration()も参照してください 。
[signal] void QWebSocket::sslErrors(const QList<QSslError> &errors)
QWebSocket SSLハンドシェイク後にこのシグナルを発行し、対等側の身元確認中に1つ以上のエラーが発生したことを示します。これらのエラーは通常、QWebSocket が対等側を安全に識別できないことを示しています。何らかの処置を講じない限り、このシグナルが発行された後に接続は切断されます。 発生したエラーにもかかわらず接続を継続したい場合は、このシグナルに接続されたスロット内からQWebSocket::ignoreSslErrors()を呼び出す必要があります。後でエラーリストにアクセスする必要がある場合は、sslErrors()(引数なし)を呼び出すことができます。
errors QWebSocket が相手側の身元を確認できない原因となるエラーが 1 つ以上含まれています。
注: このシグナルに接続する際、Qt::QueuedConnection を使用することはできません 。そうした場合、QWebSocket::ignoreSslErrors() を呼び出しても何の効果もありません。
QAbstractSocket::SocketState QWebSocket::state() const
ソケットの現在の状態を返します。
[signal] void QWebSocket::stateChanged(QAbstractSocket::SocketState state)
このシグナルは、QWebSocket の状態が変化するたびに発火します。state パラメータは、新しい状態を表します。
注: QAbstractSocket::ConnectedState は 、サーバーとのハンドシェイクが成功した後に発火します。
QAbstractSocket::SocketState は登録済みのメタタイプではないため、キューに登録された接続については、Q_REGISTER_METATYPE() およびqRegisterMetaType() を使用して登録する必要があります。
state()も参照してください 。
[since 6.4] QString QWebSocket::subprotocol() const
使用されている WebSocket プロトコルを返します。
この関数はQt 6.4で導入されました。
[signal] void QWebSocket::textFrameReceived(const QString &frame, bool isLastFrame)
この信号は、テキストフレームが受信されるたびに送信されます。frame にはデータが含まれており、isLastFrame は、これがメッセージ全体の最後のフレームであるかどうかを示します。
このシグナルを使用すると、メッセージ全体が到着するのを待つ代わりに、大きなメッセージをフレーム単位で処理することができます。
binaryFrameReceived()も参照してください 。
[signal] void QWebSocket::textMessageReceived(const QString &message)
この信号は、テキストメッセージを受信するたびに発信されます。message には、受信したテキストが含まれています。
「binaryMessageReceived()」も参照してください 。
QWebSocketProtocol::Version QWebSocket::version() const
ソケットが現在使用しているバージョンを返します。
© 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.