メインコンテンツまでスキップ

6. Sending and Receiving Data (データの送受信)

6.1 Sending Data (データの送信)

WebSocket接続を介してデータを送信するには、エンドポイントはデータをWebSocketフレームにカプセル化しなければなりません (MUST)。

送信手順

  1. 送信するデータを準備
  2. フレームタイプを決定(TextまたはBinary)
  3. クライアントの場合、マスキングキーを生成してデータをマスク
  4. WebSocketフレームを構築
  5. 基盤となる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):

  1. フレームヘッダーを読み取る
  2. フレーム形式を検証
  3. マスクされている場合、マスクを解除
  4. Opcodeに従ってフレームを処理
  5. フラグメント化されたメッセージの場合、メッセージを再構築
  6. 完全なメッセージをアプリケーション層に配信

ブラウザAPI例

ws.onmessage = (event) => {
if (typeof event.data === 'string') {
console.log('テキストを受信:', event.data);
} else if (event.data instanceof ArrayBuffer) {
console.log('バイナリを受信:', event.data);
}
};

参考リンク