WebSocket API (WebSockets)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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

メモ: WebSocket のコネクションは機能的にどこか標準 Unix スタイルのソケットに似ていますが、関連はありません。

インターフェイス

WebSocket

WebSocket サーバーに接続し、その接続を通じてデータを送受信するための主要インターフェイス

CloseEvent

接続が閉じた時に WebSocket オブジェクトによって送信されるイベントです。

MessageEvent

サーバーからメッセージを受信した時に WebSocket オブジェクトによって送信されるイベント

ガイド

ツール

  • AsyncAPI: WebSocket のようなプロトコルに基づいたイベントドリブン型アーキテクチャを記述するための仕様です。 OpenAPI 仕様で REST API を記述するのと同じように、 WebSocket ベースの API を記述するために使用することができます。 WebSocket で AsyncAPI の利用を検討すべき理由利用する方法を紹介します。
  • HumbleNet: ブラウザーで動作するクロスプラットフォームのネットワークライブラリです。ブラウザー間の違いを抽象化する WebSocket や WebRTC の C ラッパー、ゲームやその他のアプリで複数ユーザーのネットワーク機能を作成するものから成ります。
  • µWebSockets: C++11 および Node.js で書かれた可用性の高い WebSocket サーバーとクライアントの実装です。
  • Socket.IO: 長いポーリングと WebSocket ベースのサードバーティ―の 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 で、単一の接続を用いて、サーバー上にエクスポートされた機能と、同時にクライアント上のものがあります (クライアントがサーバーを呼び出すことができ、サーバーもクライアントを呼び出すことができます)。
  • cowboy: Cowboy は高速で最新の HTTP サーバーで、 Erlang/OTP のためのものであり、 WebSocket に対応しています。
  • ZeroMQ: ZeroMQ は、インプロセス、IPC、TCP、UDP、TIPC、マルチキャスト、WebSocket でメッセージを伝送する組み込み可能なネットワーキングライブラリーです。
  • WebSocket King: WebSocket サーバーの開発、テスト、作業を支援するクライアントツールです。
  • PHP WebSocket Server: WebSocket の wss:// または ws:// および通常ソケットの ssl://, tcp:// を介して接続を処理するために PHP で書かれたサーバーです。
  • Channels: WebSocket(および長時間動作する非同期接続を必要とする他のプロトコル)の対応を追加する Django ライブラリーです。
  • Flask-SocketIO: Flask アプリケーションに、クライアントとサーバー間の低遅延な双方向通信を提供します。
  • Gorilla WebSocket: Gorilla WebSocket は、WebSocket プロトコルの Go による実装です。

関連トピック

仕様書

Specification
WebSockets Standard
# the-websocket-interface

ブラウザーの互換性

BCD tables only load in the browser

関連情報