home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/HTML5/WebSocket

技術/HTML5/WebSocket

技術 / HTML5 / WebSocket
id: 1008 所有者: msakamoto-sf    作成日: 2011-08-20 21:10:37
カテゴリ: HTML 

WebSocket関連のメモ。

TCPレベルでのプロトコルを定めたのが"The WebSocket protocol"で、これはIETFで策定している。
継続してバージョンアップしており、2011-08現在は HyBi-10 という略称(Hypertext-Bidirectional)のバージョンが最新。

一時期仕様上のセキュリティ問題が見つかっており、Firefox4やOpera11でデフォルト無効にされたこともあった。

そして実際にJavaScriptから使用できるAPIのインターフェイスを定めたのが"The WebSocket API"となり、W3Cで策定している。

基本的に開発者は"API"の方だけを知っていれば良い。ただしネットワーク環境によってProxyを導入していたりするとTCPレイヤーでトラブルが発生する可能性があるので、そうなると"protocol"をある程度は知っている必要があるだろう。


pywebsocketで動いているところを見てみる

Node.jsやJettyでも動かせるようだが、個人的な好みでPythonで動く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で強制終了する。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-08-20 21:11:14
md5:8a26812b92915d63ea8f5cd69ea95023
sha1:35b4b28aab37d826867cc2467088f7664f2a2f3d
コメント
コメントを投稿するにはログインして下さい。