リアルタイムWeb
リアルタイムWebは
サーバーのデータ更新を
リアルタイムに反映するWeb技術
身近なのは
Gmailのオンラインユーザー確認
とか
Facebookのいいねボタンが押されたら即座に通知とか
これらの動作は
Webサーバーが
クライアントのWebブラウザーへ
押し込むので
プッシュといわれる
一番ストレートな手法は
ボーリング
これはjava scriptで
クライアントから
サーバーに定期的にリクエストを送る
ただし、速度はミリ秒単位
これで、サーバー側で何か状態が
変化しているなら
それに応じた処理をする
欠点は
サーバーの状態が変わらないと
リクエストは無駄になるし
ミリ秒単位でずっとアクセスするから
アクセス数が非常に多くなる
このアクセス数大量の問題を解決するため
Cometが編み出された
こっちは
クライアントからのリクエストを受け取ったサーバーは
応答を保留したまま
コネクションを張りっぱなしにする
これなら
サーバーの状態が変化しないかぎり
応答を返さない
クライアントの数だけ
接続を維持するから、同時接続数や
コネクションを維持する時間を多めに設定する必要はあるけど
ボーリングよりはいい
以前やった
javaのコネクションプールに近いかもしれない
ちなみに、現在注目なのが
WebSocket
WebSocketは
サーバーとクライアントで
効率的な双方向通信をする
これは
HTTPを使わず
サーバーとブラウザーで
専用通信路を使うやり方
これら3つのやり方ができるのが
Node.js
の
Socket.IOパッケージ
なぜ3種類かというと
WebSocketに対応していないブラウザーもあるから