HTTP Polling
- 新着データの要求(Requset)に対し、データが存在した場合はすぐに応答(Response)を返しコネクションを切断する
- 新着データの要求に対し、データが存在しない場合もコネクションを切断する
- そのため、サーバーに対して定期的に要求(Request)を行う必要がある
- サーバー側からクライアントに直接送信することができない
HTTP Long Polling
- 新着データの要求に対し、データが存在した場合にすぐに応答を返しコネクションを切断する
- 新着データの要求に対し、データが存在しない場合はサーバーとクライアント間のコネクションを維持したままとなる
- サーバー側で新着データを用意できたら応答を返しコネクションを切断する。その間、コネクションは維持されたまま
- 上記の定期的に要求を行うHTTP Pollingと比較すると、遅延が少ない
- コネクションを維持した状態で一定時間経過した場合には、切断し、再度要求を送り直す
WebSocket
- 新着データの要求に対し、データが存在した場合にすぐに応答を返すが、コネクションは切断せず維持したままとなる
- 新着データの要求に対し、データが存在しない場合も、サーバーとクライアント間のコネクションを維持したままとなる
- サーバー側で新着データを用意できたら応答を返し、コネクションを維持し続ける
- 上記2つと比較すると、最初から最後まで繋ぎっぱなしで要求と応答を繰り返すことができる
参考になったページ
WebSocketのキホン(SlideShare)
HTTP Long Pollingとは(Qiita)
リアルタイムなwebアプリを実現する方法(ポーリング、Comet、Server Sent Events、WebSocket)(Qiita)
Push技術(Wikipedia)