WebSocketとは
WebSocketは、クライアントとサーバー間で双方向のリアルタイム通信を実現するプロトコルです。チャットアプリ、オンラインゲーム、株価表示など、即時性が求められるアプリケーションで使用されます。
WebSocketのURL:
ws://(非暗号化)とwss://(TLS暗号化)が使用されます。
HTTPとWebSocketの違い
| 特徴 | HTTP | WebSocket |
|---|---|---|
| 通信方向 | クライアント→サーバー | 双方向 |
| 接続 | リクエストごとに接続/切断 | 永続的 |
| サーバープッシュ | 不可 | 可能 |
| オーバーヘッド | 毎回HTTPヘッダーを送信 | 初回のみ |
| リアルタイム性 | 低い | 高い |
WebSocketのハンドシェイク
# クライアントからのリクエスト
GET /chat HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
# サーバーからのレスポンス
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
JavaScript実装例
const socket = new WebSocket('wss://example.com/chat');
socket.addEventListener('open', (event) => {
console.log('接続成功');
socket.send('Hello Server!');
});
socket.addEventListener('message', (event) => {
console.log('受信:', event.data);
});
Socket.IO
Socket.IOは、WebSocketをベースにした高機能なライブラリです。
- フォールバック: WebSocketが使えない場合はHTTPロングポーリングを使用
- 自動再接続: 切断時に自動的に再接続
- Room機能: クライアントをグループ化
まとめ
WebSocketは、リアルタイム双方向通信を実現する強力なプロトコルです。HTTPとの特性の違いを理解し、アプリケーションの要件に応じて適切に選択・実装することが重要です。
← 一覧に戻る