WebSocket は、ユーザーのブラウザーとサーバー間で対話的な通信セッションを開くことができる先進技術です。この API によって、サーバーにメッセージを送信したり、応答をサーバーにポーリングすることなく、イベント駆動型のレスポンスを受信したりすることができます。

インターフェイス

WebSocket
WebSocket サーバに接続し、その接続を通じてデータを送受信するための主要インターフェイス
CloseEvent
接続が閉じた時に WebSocket オブジェクトによって送信されるイベントです。
MessageEvent
サーバーからメッセージを受信した時に WebSocket オブジェクトによって送信されるイベント

ツール

  • HumbleNet: ブラウザーで動作するクロスプラットフォームのネットワークライブラリです。ブラウザー間の違いを抽象化する WebSocket や WebRTC の C ラッパー、ゲームやその他のアプリで複数ユーザーのネットワーク機能を作成するものから成ります。
  • µWebSockets: C++11 及び Node.js で書かれた可用性の高い WebSocket サーバーとクライアントの実装です。
  • ClusterWS: Node.js でスケーラブルな WebSocket アプリケーションを構築する、軽量で高速で強力なフレームワークです。
  • Socket.IO : 長いポーリングと WevSocket ベースのサードバーティ―の Node.js 用転送プロトコルです。
  • SocketCluster: スケーラビリティに焦点を当てた Node.js 用の pub/sub WebSocket フレームワークです。
  • WebSocket-Node: Node.js 用の WebSocket サーバー API 実装です。
  • Total.js: Node.js 用の ウェブアプリケーションフレームワーク(使用例: WebSocket chat)
  • Faye: Node.js 用の WebSocket (双方向接続) と EventSource (片方向接続) サーバーおよびクライアント
  • SignalR: SignalR は単一のコードだけで、もしWebSocketsが使用可能な場合、基盤として WebSockets を使用し、そうでない場合はほかの代替技術にフォールバックします。
  • Caddy: WebSocket として任意のコマンド (stdin/stdout) を中継することができるウェブサーバーです。
  • ws: Node.js のための有名な WebSocket クライアント&サーバーライブラリです。
  • jsonrpc-bidirectional: 使いやすい非同期の RPC ライブラリで、双方向呼び出しに対応しており、単一の WebSocket または RTCDataChannel (WebRTC) コネクションを使用ています。 TCP/SCTP/等のクライアントとサーバーは、それぞれのホストに同時に JSONRPC.Server 端点を持つことができます。
  • rpc-websockets: Node.js および JavaScript 用の WebSocket の JSON-RPC 2.0 実装です。

関連情報

ブラウザーの対応

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 手助けしていただける場合は、こちらから!

機能 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Version -76 の対応 6 未サポート 4.0 (2.0) 未サポート 11.00 (disabled) 5.0.1
Protocol version 7 の対応 未サポート 未サポート 6.0 (6.0)
Moz
未サポート 未サポート 未サポート
Protocol version 10 の対応 14 未サポート 7.0 (7.0)
Moz
HTML5 Labs ? ?
Standard - RFC 6455 の対応 43 14 48.0 (48.0) 10 12.10 6.0
Worker での使用 (有) (有) 37.0 (37.0) ? ? ?
機能 Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Version -76 の対応 ? 未サポート ? ? ? ?
Protocol version 7 の対応 ? 未サポート ? ? ? ?
Protocol version 8 の対応 (IETF draft 10) ? 未サポート 7.0 (7.0) ? ? ?
Standard - RFC 6455 の対応 4.4 (Yes) 11.0 (11.0) ? 12.10 6.0
Worker での使用 (有) (有) 37.0 (37.0) ? ? ?

Gecko に関する注記

Firefox の WebSocket サポートは、進展する WebSocket 仕様への追従を継続しています。Firefox 6 は基礎的なプロトコルのバージョン 7 を実装し、また Firefox 7 はバージョン 8 (IETF ドラフト 10 で定義) を実装しました。モバイル版では、モバイル Firefox 7.0 で WebSocket がサポートされました。

Gecko 6.0

Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3) より前のバージョンでは誤って WebSocket オブジェクトが存在しており、一部のサイトが WebSocket サービスは接頭辞がつかないものであると考えていました。このオブジェクトは MozWebSocket に改名されました。

Gecko 7.0

Gecko 7.0 (Firefox 7.0 / Thunderbird 7.0 / SeaMonkey 2.4) より設定項目 network.websocket.max-connections が、一度に開くことができる WebSocket 接続の最大数を決めるために使用されます。この既定値は 200 です。

Gecko 8.0

Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5) より WebSocket プロトコルの deflate-stream 拡張が、ドラフト仕様で非推奨とされたため無効になりました。これは一部のサイトとの非互換問題を解決します。

Gecko 11.0

Gecko 11.0 より前は、受信および送信メッセージのサイズを 16MB に制限していました。このサイズを 2GB に引き上げることができます。ただし、(特にモバイルデバイスで) メモリ容量の制限によって、これはあくまで理論上の上限となり、実用上の上限とはなりません。実際、十分なメモリを持たないデバイスでは、大きなサイズのメッセージの転送が失敗します。

加えて、バイナリデータ向けに ArrayBuffer の送信と受信のサポートを実装しました。

Gecko 11.0 より、 WebSocket API に接頭辞が付かなくなりました。

ドキュメントのタグと貢献者

このページの貢献者: mfuji09, lv7777, hamasaki, teoli, ethertank, yyss
最終更新者: mfuji09,