WebSocketと、SPDYってどう違うのよ?


どっちもクライアント、サーバ間でコネクションを確立して、双方向通信が可能なので、
SPDYって、WebSocketの上位互換なの? みたいな印象が強かったけど違うらしい

目的がそもそも違う

  • WebSocket → サーバ、クライアント間での双方向通信を可能にしたい
  • SPDY → 従来のHTTP通信って遅いから早くしたい

できることは似てる

  • WebSocket → サーバ、クライアント間でコネクションを1本確立して、その中でメッセージの送受信を行う
  • SPDY → サーバ、クライアント間でコネクションを1本確立して、その中でリソースの受け渡しを行う

どう違うの?

WebSocket
SPDY
  • 1本のコネクションで、
    • リソース(画像とか、cssとか)を優先度をつけて受け渡すことで、従来より高速な通信がしたい
    • クライアントがhtml読んでから、必要なリソースを要求するんじゃなくて、サーバ側がpush通信で先に送りつけることで高速な通信がしたい


なので、

  • 通信の高速化をしたい → SPDYを使う
  • 双方向通信をしたい → WebSocketを使う


という事になるっぽい
やれることは似てるけど、目的が違うと

実装方法の違い
  • WebSocket → 何を送受信するか、クライアント、サーバ側それぞれで実装する必要がある
  • SPDY → 単にリソースを単一コネクションで渡すだけなら、ブラウザ側の実装は不要。サーバ側もSPDYモジュールを追加するだけ


目的がそもそも違うから実装方法も違う

参考