- サーバとブラウザ間で双方向通信(サーバからのPUSH)を可能とする規格
- AJAXのようなHTTPを使った疑似PUSH通信ではなく、本物のPUSH通信が可能
- つまりリアルタイム通信ということ
PivotalTracker的なリアルタイムタスク管理
PlayFrameworkでのデモ実装
参考: https://github.com/kzkn/writing/blob/master/websocket/text.md
AJAX
- ブラウザ側から任意のタイミングでXMLHttpRequestを送信する
- いわゆるポーリング
Comet
- コールバック用のリクエストを送信しておく
- サーバはリクエストを保持しておいて、イベント時にそのリクエストのレスポンスとしてメッセージを返却する
- クライアントはまたコールバック用のリクエストを送信しておく(1イベントに1リクエスト必要)
WebSocket
- ひとつのコネクションを張ることで、なんどでもやり取り可能
- 独自プロトコル
CGI時代
- METAタグなどで定期的にポーリングして再描画
- ユーザ:画面がちらちらしてうぜー、2秒も待ってられないから更新ボタン押しちゃうぜ
AJAX時代
- XHRで定期的にポーリング、更新があれば画面再描画
- ユーザ:2秒も待ってられないから更新ボタン押しちゃうぜ
Comet時代
- 誰かが発言したら自動的に画面再描画
- ユーザ:これいいじゃん
- サーバ:ずっとリクエスト保持しとくのでコストかかる。。
- HTTPに依存していないからテキスト以外(バイナリ)も送れるぜ!
- Web Audio API とか GetUserMedia とかブラウザ拡張と合わせるとおもろい
- http://blog.agektmr.com/2012/03/websocket.html
- http://goo.gl/mNX6L
チケット管理
- PivotalTracker
- 複数人でチケット管理
ログのリアルタイム表示
- node.jsでログをtail -fしてWebSocketに流す
- http://laboyukai.blogspot.jp/2013/05/tail-f.html
- http://dev.classmethod.jp/server-side/log4play/
通知いろいろ
- Backlogのあれ
スマートテレビ
- ひかりTVのリモコンアプリ
サーバなしでWebSocketする