ネットワーク 2026-06-27 ⏱ 約 7 分

リアルタイムWeb通信の比較:ポーリング・SSE・WebSocket・WebRTC・WebTransport

ポーリング・SSE・WebSocket・WebRTC・WebTransportという5つのリアルタイムWeb通信技術を、通信方向やトランスポートで分類し、概要・最小実装・pros/consと選定基準を横断的にまとめる。実時間通信の方式を選ぶときの地図となる記事。

Read in: en
リアルタイムWeb通信の比較:ポーリング・SSE・WebSocket・WebRTC・WebTransport

はじめに

Webでサーバーからクライアントへ「すぐに」データを届けたい場面は多い。

チャット、通知、株価、対戦ゲーム、ビデオ通話など、リアルタイム性が求められる用途はさまざまである。

本記事では、代表的な5つのリアルタイムWeb通信技術を横断的に比較する。

それぞれの概要・最小実装・pros/consを整理し、最後に選定基準を示す。

なお、API全体のスタイル比較は各種APIスタイルの比較にまとめている。本記事はそのうちリアルタイム通信を掘り下げる位置づけである。

分類軸

比較の前に、整理のための軸を示す。

ポーリング

クライアントが一定間隔でサーバーに問い合わせ、更新を取得する最も素朴な方式である。

一定間隔で繰り返すショートポーリングと、サーバーが更新まで応答を保留するロングポーリングがある。

// ショートポーリング
setInterval(async () => {
  const res = await fetch("/api/messages");
  const data = await res.json();
  render(data);
}, 3000);

pros / cons

SSE(Server-Sent Events)

サーバーからクライアントへ、1本のHTTP接続で継続的にイベントを送り続ける単方向の仕組みである。

const es = new EventSource("/api/stream");
es.onmessage = (e) => render(JSON.parse(e.data));

pros / cons

WebSocket

1本のコネクション上で、クライアントとサーバーが双方向にメッセージを送り合う仕組みである。

HTTPからアップグレードして常時接続を張る。

const ws = new WebSocket("wss://example.com/socket");
ws.onmessage = (e) => render(e.data);
ws.onopen = () => ws.send("hello");

pros / cons

WebRTC

ブラウザ間でP2Pに、音声・映像・データを低遅延でやり取りする仕組みである。

接続確立には、別経路でのシグナリング(SDPやICE候補の交換)が必要になる。

const pc = new RTCPeerConnection();
const channel = pc.createDataChannel("chat");
channel.onmessage = (e) => render(e.data);
// この後、SDP と ICE 候補をシグナリングサーバー経由で交換する

pros / cons

WebTransport

HTTP/3(QUIC)上で動く、双方向かつ多重化された新しい通信APIである。

WebSocketの後継と目され、信頼性のあるストリームと、順序を保証しないデータグラムの両方を扱える。

const wt = new WebTransport("https://example.com:4433/wt");
await wt.ready;
const stream = await wt.createBidirectionalStream();

pros / cons

横断比較表

観点 ポーリング SSE WebSocket WebRTC WebTransport
方向 単方向(pull) 単方向(push) 双方向 双方向(P2P) 双方向
トランスポート HTTP HTTP TCP(HTTPから昇格) UDP(P2P) HTTP/3(QUIC)
ブラウザ対応 全環境 広い 広い 広い 限定的
再接続 自前 標準で自動 自前 自前 自前
主な用途 簡易な更新確認 通知・フィード チャット・ゲーム 通話・映像 大容量・低遅延
実装の複雑さ 中〜高

選定基準

要件から技術を選ぶときの目安を示す。

迷ったら、まずSSEかWebSocketを基準に考えるとよい。単方向で足りるならSSE、双方向ならWebSocketが扱いやすい。

まとめ

リアルタイムWeb通信は、通信方向とトランスポートで整理できる。

シンプルさならポーリングやSSE、双方向ならWebSocket、メディアならWebRTC、最先端ならWebTransport、と要件で選び分けるとよい。

参考

Tags: ポーリング SSE WebSocket WebRTC WebTransport リアルタイム
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事