Ruby's Louvre

每天学习一点点算法

导航

最近のWebSocket事情についてまとめとく

最近のWebSocket事情についてまとめとく

id:Jxck(@Jxck_)さんからのリクエストもありましたので、現状でのWebSocket情報をまとめておきます。

※この情報は2010/9/1時点のものです。ご覧になっている時点の情報とは変わっている可能性があります。

※2010/9/1:いろいろ更新しました。


ざっくり説明

一言で説明すると、WebServerとWebBrowser用の双方向通信用のプロトコル

Server側からのプッシュができるので、XHRでポーリングする必要がない。

現行のWebSocket対応ブラウザ側には,same originポリシーによる制限はないようです。

仕様

最新版の仕様を確認してください。

The WebSocket API

日本語版は以下を参照

「仕様だけじゃよう分からん!」という人は以下を読むといいかも

※とりあえず一度動かしてみるとどんなものかわかるきがする。


大きな仕様変更

近頃仕様が大きく変わりました。draft75以前とdraft76以降はほぼ別ものです。

おおまかにいうと、ブラウザからサーバにつなぐときにハンドシェイクが必要なのですが、ハンドシェイクするときのヘッダ情報がかわりました。

詳しくは以下サイトを参照。

下の記事をみた感じだとまだまだ今後も仕様が変わりそうですね。


Serverの対応情報

今のところ私が把握しているサーバ実装です。


※最新版仕様の実装はpywebsocket,Goが対応が早かった。Chromeの実装確認用?( WebSocket draft 76 のサーバサイドの実装始めた方いますか? - html5-developers-jp | Google グループ )

node.js+Socket.IO+Socket.IO-nodeAdobe Flash Socketを使うことで、IEなど未対応のブラウザとも通信できるようにしています!素敵!(参考->node.jsのSocket IO-nodeでWebSocket - but hopeful)


Browserの対応情報

現状では75以前と76以降の両方に対応しているブラウザはありません。

ブラウザは最新版の仕様に追従しているみたいですね。

Browser75以前76
IE6~8××
Firefox3××
Firefox4×
Opera10.6××
Safari5×
Chrome4,5×
Chrome6×

※websocket.js(http://github.com/gimite/web-socket-js/)を使うことで、IEなど未対応のブラウザとも通信できる様子。上述のSocket-IO-Nodeも使っています。

ちょっと気になる発言をTwitterで発見!


どんなことに使われてるか

エコーサーバorチャットの例が多い感じ。面白そうな取り組みを紹介します。

その他

posted on 2011-11-09 14:05  司徒正美  阅读(1889)  评论(1编辑  收藏  举报