リアルタイム双方向通信用WebSocketサポート

永続的なフルデュプレックス通信チャネル用のWebSocketサポートを検出。接続ライフサイクル、バイナリデータ、再接続戦略を解説。

Network

詳細な説明

WebSocket検出

WebSocketは単一のTCP接続上で永続的なフルデュプレックス通信チャネルを提供し、ブラウザとサーバー間のリアルタイムデータ交換を可能にします。

検出

const hasWebSocket = typeof WebSocket !== 'undefined';

接続ライフサイクル

const ws = new WebSocket('wss://echo.example.com');

ws.onopen = () => {
  console.log('接続完了');
  ws.send('Hello');
};

ws.onmessage = (event) => {
  console.log('受信:', event.data);
};

ws.onclose = (event) => {
  console.log('切断:', event.code, event.reason);
};

ws.onerror = (error) => {
  console.error('エラー:', error);
};

バイナリデータ

ws.binaryType = 'arraybuffer'; // or 'blob'
ws.send(new Uint8Array([1, 2, 3, 4]));

再接続戦略

function createReconnectingWS(url) {
  let ws;
  let retries = 0;
  const maxRetries = 10;

  function connect() {
    ws = new WebSocket(url);
    ws.onopen = () => { retries = 0; };
    ws.onclose = () => {
      if (retries < maxRetries) {
        const delay = Math.min(1000 * 2 ** retries, 30000);
        setTimeout(connect, delay);
        retries++;
      }
    };
  }

  connect();
  return { send: (d) => ws?.send(d) };
}

WebSocket vs 代替手段

機能 WebSocket SSE HTTP/2 Push ロングポーリング
双方向 はい いいえ(サーバーのみ) いいえ シミュレート
バイナリデータ はい いいえ はい はい
オーバーヘッド
プロキシフレンドリー 時々 はい はい はい

ユースケース

チャットシステム、共同編集、ライブダッシュボード、株価ティッカー、マルチプレイヤーゲーム、通知システムなどのリアルタイムアプリケーションを駆動します。低遅延の双方向通信を必要とするあらゆるシナリオでHTTPポーリングよりも推奨されます。

試してみる — Browser Feature Detector

フルツールを開く