WebSocketと、SPDYってどう違うのよ?
どっちもクライアント、サーバ間でコネクションを確立して、双方向通信が可能なので、
SPDYって、WebSocketの上位互換なの? みたいな印象が強かったけど違うらしい
目的がそもそも違う
- WebSocket → サーバ、クライアント間での双方向通信を可能にしたい
- SPDY → 従来のHTTP通信って遅いから早くしたい
できることは似てる
- WebSocket → サーバ、クライアント間でコネクションを1本確立して、その中でメッセージの送受信を行う
- SPDY → サーバ、クライアント間でコネクションを1本確立して、その中でリソースの受け渡しを行う
どう違うの?
WebSocket
- 1本のコネクションで、インタラクティブなweb体験の為の双方向通信をしたい
SPDY
- 1本のコネクションで、
- リソース(画像とか、cssとか)を優先度をつけて受け渡すことで、従来より高速な通信がしたい
- クライアントがhtml読んでから、必要なリソースを要求するんじゃなくて、サーバ側がpush通信で先に送りつけることで高速な通信がしたい
なので、
- 通信の高速化をしたい → SPDYを使う
- 双方向通信をしたい → WebSocketを使う
という事になるっぽい
やれることは似てるけど、目的が違うと
実装方法の違い
- WebSocket → 何を送受信するか、クライアント、サーバ側それぞれで実装する必要がある
- SPDY → 単にリソースを単一コネクションで渡すだけなら、ブラウザ側の実装は不要。サーバ側もSPDYモジュールを追加するだけ
目的がそもそも違うから実装方法も違う
参考
- SPDY と WebSocket の基礎と SPDY の Push - Block Rockin’ Codes
- ネタ元。大体おんなじことをもっとくわしく書いてる
- こてさきAjax:node-spdy 試してみた - livedoor Blog(ブログ)
- SPDYの詳しい解説とか、WebSocketでおんなじ機能を実装して比較とかしてる
- SPDY対WebSockets?
- WebSocketのSPDYと比較しての脆弱性や問題点。速度を追求することが目的ならSPDYに分があるよねとかいう話