6. Sending and Receiving Data (データの送受信)
6.1 Sending Data (データの送信)
WebSocket接続を介してデータを送信するには、エンドポイントはデータをWebSocketフレームにカプセル化しなければなりません (MUST)。
送信手順
- 送信するデータを準備
- フレームタイプを決定(TextまたはBinary)
- クライアントの場合、マスキングキーを生成してデータをマスク
- WebSocketフレームを構築
- 基盤となるTCP接続を通じて送信
ブラウザAPI例
const ws = new WebSocket('wss://example.com/socket');
// テキストデータを送信
ws.send('Hello, Server!');
// バイナリデータを送信
const buffer = new ArrayBuffer(8);
ws.send(buffer);
// Blobを送信
const blob = new Blob(['Hello'], { type: 'text/plain' });
ws.send(blob);
6.2 Receiving Data (データの受信)
エンドポイントがデータを受信したとき、以下の手順に従って処理しなければなりません (MUST):
- フレームヘッダーを読み取る
- フレーム形式を検証
- マスクされている場合、マスクを解除
- Opcodeに従ってフレームを処理
- フラグメント化されたメッセージの場合、メッセージを再構築
- 完全なメッセージをアプリケーション層に配信
ブラウザAPI例
ws.onmessage = (event) => {
if (typeof event.data === 'string') {
console.log('テキストを受信:', event.data);
} else if (event.data instanceof ArrayBuffer) {
console.log('バイナリを受信:', event.data);
}
};