memomem

備忘録・メモ置き場

WebSocket 仕様について

ChatGPTからの解答なので詳細は確認する必要あり。

一般的に、WebSocketで送受信されるパケットは以下のような構造になっています。

## ヘッダー
* FIN (1ビット):1であればメッセージの最後のフレーム、0であれば途中のフレームであることを示す。
* RSV1, RSV2, RSV3 (各1ビット):将来の拡張に予約されたビット。
* Opcode (4ビット):フレームのデータ型を示す。0x1がテキスト、0x2がバイナリ。
* Mask (1ビット):マスクを使用するかどうかを示す。クライアントからサーバーに送信する場合には必ず1にする必要があります。
* Payload length (7ビットまたは16ビットまたは64ビット):ペイロードの長さを示す。7ビットで表現できない場合には16ビットまたは64ビットで表現します。
* Masking-key (0または4バイト):マスクに使用する鍵。クライアントからサーバーに送信する場合には必ず4バイトにする必要があります。

## ペイロード
* メッセージの本体が格納されています。
WebSocketのデータ送受信タイムアウトには、以下の2種類があります。

## データ送信タイムアウト
* クライアントがサーバーにデータを送信した後、一定時間内にサーバーから応答がない場合にタイムアウトします。
* これは、クライアントがサーバーにデータを送信した後、サーバーがそのデータを受信し、処理を行い、応答を返すまでの時間が一定以上かかった場合に、クライアントが待ち続けることを防止するために設定されます。
* 一般的には、WebSocketライブラリやフレームワークのデフォルト値が使用されますが、設定可能な場合もあります。
## データ受信タイムアウト
* サーバーがクライアントからのデータを受信した後、一定時間内に処理を行い、応答を返さない場合にタイムアウトします。
* これは、サーバーがクライアントからのデータを受信した後、そのデータを処理するために一定以上の時間がかかった場合に、クライアントが待ち続けることを防止するために設定されます。
* 一般的には、WebSocketライブラリやフレームワークのデフォルト値が使用されますが、設定可能な場合もあります。