#navi_header|技術| WebSocket関連のメモ。 - WebSocket - Wikipedia, the free encyclopedia -- http://en.wikipedia.org/wiki/WebSocket - HTML5に追いつこう!Pure JSでWeb Socketsを動かしてみる - Born Neet -- http://blog.bornneet.com/Entry/267/ - WebSocketでリアルタイムWeb -- https://docs.google.com/present/view?id=dddvzhrc_3frv8djhr&pli=1 TCPレベルでのプロトコルを定めたのが"The WebSocket protocol"で、これはIETFで策定している。 継続してバージョンアップしており、2011-08現在は HyBi-10 という略称(Hypertext-Bidirectional)のバージョンが最新。 - draft-ietf-hybi-thewebsocketprotocol-10 - The WebSocket protocol -- http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10 一時期仕様上のセキュリティ問題が見つかっており、Firefox4やOpera11でデフォルト無効にされたこともあった。 - こてさきAjax:WebSocketがデフォルトdisableとなった件 - livedoor Blog(ブログ) -- http://blog.livedoor.jp/kotesaki/archives/1600864.html - The Dangers of HTML5: WebSockets and Stable Standards | HTML5 | HTMLGoodies -- http://www.htmlgoodies.com/html5/the-dangers-of-html5-websockets-and-stable-standards.html そして実際にJavaScriptから使用できるAPIのインターフェイスを定めたのが"The WebSocket API"となり、W3Cで策定している。 - The WebSocket API -- http://dev.w3.org/html5/websockets/ 基本的に開発者は"API"の方だけを知っていれば良い。ただしネットワーク環境によってProxyを導入していたりするとTCPレイヤーでトラブルが発生する可能性があるので、そうなると"protocol"をある程度は知っている必要があるだろう。 #more|| ---- * pywebsocketで動いているところを見てみる Node.jsやJettyでも動かせるようだが、個人的な好みでPythonで動くpywebsocketを試してみる。 - pywebsocket - WebSocket server and extension for Apache HTTP Server for testing - Google Project Hosting -- http://code.google.com/p/pywebsocket/ メインはApache HTTP Serverとmod_pythonの組み合わせを想定しているライブラリだが、Webサーバをstandaloneで動かすことも出来る(PythonのHTTPServer系モジュールを利用)ので、特に難しい設定は必要ない。とりあえずWin7 SP1 + Python 2.7でさくっと動かしてみる。 まずはソースツリーをGETする。今回はSVNからcheckoutした。今回動作確認するファイルに絞ってディレクトリ構造を紹介する。 src\ example\ ... サンプルのDocumentRoot console.html ... JavaScriptでechoクライアント echo_wsh.py ... echoサーバ側ハンドラ(WebSocket Handler) handler_map.txt ... URLパスとハンドラのmapファイル mod_pywebsocket\ standalone.py ... standaloneで動くサーバプログラム サーバ側を動かしてみる。srcにcdし、PYTHONPATHにとりあえずカレントディレクトリを設定。 > cd ...\src > set PYTHONPATH=. ちなみにPYTHONPATHを設定するのは、まだpythonモジュールとしてインストールしていないため。 standalone.pyを実行する。コマンドライン引数の意味についてはmod_pywebsocketの__init__.pyとstandalone.py参照。 > python mod_pywebsocket\standalone.py -p 8180 -w . -d .\example -m handler_map.txt ブラウザから下記アドレスにアクセス。 http://localhost:8180/console.html "connect"に成功すれば、"send"でテキストメッセージを送信、echo結果を確認できる。 サーバ側はC-cで強制終了する。 #navi_footer|技術|