ネットワーク
上級

WebSocket (RFC 6455)(ウェブソケット)

IETF 2011年12月標準化の双方向Web 通信プロトコル。HTTP Upgrade Handshake からTCP上で全二重通信、リアルタイムWeb アプリの定番。

0 回閲覧
0 いいね
2026/5/15 更新
関連タグ
WebSocket
ネットワーク
HTTP

概要

WebSocket はIETF が2011年12月にRFC 6455 として標準化、W3C が同時にWebSocket API 公開した双方向Web 通信プロトコル。HTTP 1.1 Upgrade Handshake (HTTP Upgrade: websocket) でHTTP 接続をWebSocket にアップグレード、その後TCP上で全二重 (Full Duplex) ・低遅延・小オーバーヘッド (フレーム最小2 byte) で双方向通信を実現する、リアルタイムWeb アプリの定番プロトコル。

WebSocket Upgrade Handshake

クライアント → サーバ:
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

サーバ → クライアント:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

→ WebSocket 接続確立・以後フレーム送受信

WebSocket 主要機能

機能内容
トランスポートTCP (Port 80 / 443)
接続方式HTTP Upgrade Handshake
Full Duplexあり
バイナリ / テキスト両方サポート
フレームサイズ最小2 byte (HTTP/1 50-200 byte 比軽量)
ping / pongあり (Keep-Alive)
Close Frameあり (4 byte code + reason)
Subprotocolあり (Sec-WebSocket-Protocol)
Extensionsあり (compression 等)
暗号化wss:// (TLS)

WebSocket vs HTTP Polling

リアルタイム通信のアプローチ比較:

手法レイテンシサーバ負荷帯域効率
HTTP Long Polling1-10s高低
HTTP Short Polling0.5-5s極高極低
HTTP Server-Sent Events<1s中中
WebSocket<100ms低高
QUIC + HTTP/3<50ms低高

主要採用

サービス用途
Slackリアルタイムメッセージ
Discordチャット・音声 / Voice接続
Notionリアルタイム共同編集
Google Docsリアルタイム共同編集 (旧)
Trading Platforms株価・為替リアルタイム
MMORPGプレイヤ状態同期
Zoom / WebRTC signal接続制御
Twitch / YouTubeチャット
GitHubリアルタイム通知

主要ライブラリ

言語ライブラリ
JavaScript (Browser)ネイティブWebSocket API
Node.jsws / socket.io
Pythonwebsockets / asyncio
Gogorilla/websocket / nhooyr
JavaSpring WebSocket / Jetty
C#.NET WebSocket / SignalR
Rusttokio-tungstenite

Socket.IO

WebSocket 上の高水準ライブラリ (2010-):

  • 自動Fallback (HTTP Polling 経由)
  • Room / Namespace 機能
  • Acknowledgement
  • Auto Reconnection
  • 利用大手: Slack初期 / Microsoft Office / Trello

WebSocket より使いやすいAPI で、Node.js + Socket.IO は WebRTC / WebSocket アプリの定番。

WebSocket セキュリティ

脅威対策
中間者攻撃wss:// (TLS 強制)
Cross-Site HijackingSec-WebSocket-Key 検証
Origin Header BypassOrigin 検証
Permission HeaderCORS 対応
DoS 攻撃Rate Limiting・接続数制限
ハンドシェイクFlood認証要求

関連用語との違い

  • vs HTTP: 単方向Request/Response / 双方向
  • vs SSE (Server-Sent Events): 双方向 / サーバ→クライアント片方向
  • vs WebRTC: WebSocket はサーバ経由 / WebRTC は P2P
  • vs gRPC: WebSocket は単独メッセージ / gRPC は構造化Streaming

FAQ

Q1: HTTP/2 で WebSocket 不要? A: HTTP/2 Stream 多重化はあるが、双方向Push はWebSocket / SSE が依然有利。HTTP/2 over WebSocket (RFC 8441) も存在。

Q2: HTTP/3 / QUIC で? A: QUIC は Stream 多重化標準・WebSocket over HTTP/3 (RFC 9220・2022年6月) で QUIC ベースのWebSocket 可能。新規実装は HTTP/3 + Stream 優位。

Q3: 接続数上限? A: ブラウザは1 オリジンあたり6 並列が伝統的制限 (HTTP/1.1 同様)・WebSocket は別カウントで余裕あり。サーバ側は数万-数十万同時接続可能 (Linux epoll + 効率実装)。

この記事について
カテゴリーネットワーク
難易度上級
作成日2026/5/15