ロングポーリング・SSE・WebSocketは、更新の受け取り方が違う
ロングポーリングは、普通のリクエストです。サーバーは、伝える更新が生じるまで応答を保留し、クライアントは、応答を受け取ったらすぐ、新しいリクエストを送ります。そのため、1つの遅いリクエストが、ループしているように見えます。この方法により、数秒おきにリクエストを送って、ほとんど空のレスポンスを受け取るという無駄を避けられます。
SSEは、1本の接続を開いたままにし、サーバーが、その接続にイベントを流し続けます。クライアントは、イベントを受け取るだけで、その接続から何かを送り返すことはありません。
WebSocketも、1本の接続を開いたままにしますが、データは双方向に流れ、クライアントもサーバーも、いつでも送信できます。これは、チャットのような用途に必要な性質です。サーバーからクライアントへの片方向のロングポーリングやSSEでは、実現できません。
この課の目標
ロングポーリング・SSE・WebSocketを、それぞれの接続をどれだけ長く保つか、データが片方向か双方向かで比較できる。
あるチャットアプリケーションは、新しいメッセージを即座に受け取ることと、ユーザーが入力した瞬間にメッセージを送ることの両方を、接続を繰り返し新しく開かずに実現する必要がある。どれが合う?