偷瓜的贼 发表于 2017-2-28 10:28:43

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

最近のWebSocket事情についてまとめとく
HTML5, WebSocket
  id:Jxck(@Jxck_)さんからのリクエストもありましたので、現状でのWebSocket情報をまとめておきます。
  ※この情報は2010/9/1時点のものです。ご覧になっている時点の情報とは変わっている可能性があります。
  ※2010/9/1:いろいろ更新しました。

ざっくり説明
  一言で説明すると、WebServerとWebBrowser用の双方向通信用のプロトコル。
  Server側からのプッシュができるので、XHRでポーリングする必要がない。
  現行のWebSocket対応ブラウザ側には,same originポリシーによる制限はないようです。
仕様
  最新版の仕様を確認してください。
  The WebSocket API
  日本語版は以下を参照


[*]Web Socket protocol — websocket_jp v0.44 documentation
[*]W3C - 『The Web Sockets API』日本語訳 - HTML5.JP
  「仕様だけじゃよう分からん!」という人は以下を読むといいかも


[*]書籍(Amazon.co.jp: HTML5&API入門: 白石 俊平, 株式会社あゆた: 本)
[*]特集:Jettyで始めるWebSocket超入門|gihyo.jp … 技術評論社
  ※とりあえず一度動かしてみるとどんなものかわかるきがする。

大きな仕様変更
  近頃仕様が大きく変わりました。draft75以前とdraft76以降はほぼ別ものです。
  おおまかにいうと、ブラウザからサーバにつなぐときにハンドシェイクが必要なのですが、ハンドシェイクするときのヘッダ情報がかわりました。
  詳しくは以下サイトを参照。


[*]「続・ハイパフォーマンスWebサイト」に書かれたWebSocket記事への更新 - Nothing ventured, nothing gained.
[*]WebSocket Draft75 «ケンタテクブロ
[*]Jettyで始めるWebSocket超入門:第6回 アプリケーションの作成と配布物の生成|gihyo.jp … 技術評論社
  下の記事をみた感じだとまだまだ今後も仕様が変わりそうですね。


[*]こてさきAjax:WebSocketプロトコルのframe仕様が変更されそう - livedoor Blog(ブログ)

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


[*]Python

[*]pywebsocket
[*]django-websocket
[*]gunicorn
[*]meinheld
[*]tornado
[*]cyclone
[*]txwebsockets

[*]Java

[*]Jetty

[*]Ruby

[*]em-eventmachine
[*]rev-websocket

[*]JavaScript

[*]node.js+Socket.IO

[*]Go

[*]Go langのwebsocket

[*]Erlang

[*]MochiWebでの実装




[*] shirasu -Project Hosting on Google Code→Erlangの軽量HTTPライブラリMisultinをベースにしたWebSocketフレームワークになる予定だそうです(Thanks!id:MiCHiLUさん)

[*]PHP

[*] phpwebsocket -Project Hosting on Google Code

[*]Perl

[*]typester’s anyevent-websocket-demo at master - GitHub
[*]clkao’s Web-Hippie at master - GitHub

[*]Clojure

[*]http://github.com/ztellman/aleph:aleph


  ※最新版仕様の実装はpywebsocket,Goが対応が早かった。Chromeの実装確認用?(WebSocket draft 76 のサーバサイドの実装始めた方いますか? -html5-developers-jp | Google グループ)
  ※node.js+Socket.IO+Socket.IO-nodeはAdobe 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で発見!


http://a1.twimg.com/profile_images/829056757/takuyalatest_normal.jpg   
web-socket-js URL でFlash fallbackが出来るのは良いんだけど。。。 #wsbof
2010-08-31 19:34:24 via web
   

http://a1.twimg.com/profile_images/829056757/takuyalatest_normal.jpg   
プロキシ問題。wss (port 443) を使えば良いのだけれど、Flash fallbackだと駄目だった。誰かが修正してくれたのだけれど、今度は自己署名証明書じゃないと動かない現象 orz #wsbof
2010-08-31 19:56:34 via web
   
どんなことに使われてるか
  エコーサーバorチャットの例が多い感じ。面白そうな取り組みを紹介します。


[*]KanasanさんのVNChttp://github.com/Kanasansoft/WebSocketRemote/downloads
[*]ネットワーク上に流れるパケットを可視化するデモ・アプリケーションWebGL + WebSocket DEMO — Accense Technology, Inc.
[*]こてさきAjax:HTMLプレゼンをWebSocketを利用し、iPhoneから操作するツールを作ってみました. - livedoor Blog(ブログ)
[*]ServerからPushするサービスPusher - Realtime client push powered by HTML5 websockets, beyond AJAX
[*]ChaosProxy

[*]WebSocketクライアント実装部分のソースがかなり有益http://github.com/yuiseki/chaos_proxy

その他


[*]イベント

[*]Tweetvite :: WebSocket BoF



[*]Kanasanさんのまとめ記事

[*]Shibuya.js beyond HTML5 の発表資料 (Kanasansoft Web Lab.)



[*]id:makotoiのPusher紹介

[*]http://www.slideshare.net/inouemak/building-realtimewebslide



[*]WebSocket用ベンチマーク

[*]makoto’s wsbench at master - GitHub

页: [1]
查看完整版本: 最近のWebSocket事情についてまとめとく