リアルタイム通信を実現するWEB技術の違い【ポーリング、ロングポーリング、SSE、WebSocket】

リアルタイム通信を実現する方法として

  • ポーリング
  • ロングポーリング
  • SSE
  • WebSocket

の4つがあるらしい。

その違いをメモ。

違い

  • ポーリング:
    • クライアント側が定期的に「更新されてない?」と尋ねて、それに対してサーバー側は更新されていない場合は「更新されてないよ」と返し、更新されていた場合は更新されたデータを返す。これをひたすら繰り返す方式。ポーリング
  • ロングポーリング:
    • クライアント側が「更新されてない?」と尋ねて、それに対してサーバー側は更新されるまで返事を保留し、更新されたタイミングで「更新されたよ」と更新されたデータを返す。そしてサーバーから返事が帰ってきたらすぐさまクライアント側は「更新されてない?」と尋ねる。これをひたすら繰り返す方式。
      ロングポーリング
  • SSE(Server Sent Events):
    • クライアント側が「更新されてない?」と尋ねて、それに対してサーバー側は更新されるまで返事を保留し、更新されたタイミングで「更新されたよ」と更新されたデータを返す。さらにデータを返した後も接続は切らずにそのまま繋いでおき、今後データが更新されるたびに「更新されたよ」と更新されたデータを返す。
      sse(server sent events)
  • WebSocket:
    • SSEと似ているが、以下の2点が違う
      1. クライアント側からもデータを送れる(SSEはサーバ→クライアントという1方向にしか送れない)
      2. 使用するプロトコルがWebSocket専用のもの。(WebSocket以外の方法ではすべてHTTPプロトコルのみで行われてる)
        websocket

 

おわり

 

画像の引用元:ハンズオンNode.js

コメント

タイトルとURLをコピーしました