今日はwebsocket
なんだか、話が二転三転して結局何も作れないエンジニアになってしまいそうだが、今日はwebsocket導入についてのメモを。
ポート
今回、既に80番ではapache上でwebメールやらなんやらが動いている状態なので、新しいアプリケーション用にいくつかportを開放する必要がある。
8080番
webrickとかのAPサーバ用。
3000番
websocketサーバ用。
843番
socket-policy用。
サーバ
ruby:rev-websocket(ruby1.9でインストールコケた)
GitHub - frsyuki/rev-websocket: WebSocket server implementation based on Rev
apache:mod_pywebsocket(試してない、というかpython分からない;;)
GitHub - google/pywebsocket: WebSocket server and extension for Apache HTTP Server for testing
node.websocket.js(サーバサイドもjsで。)
他にgolangで何かあるみたい?
クライアント
対応ブラウザは現状chromeとfirefox4系のみ。(safariも?)その他のブラウザでは、web-socket.js+flashを使う方法がある。この場合、サーバ上にsocket-policyファイルを配置しなければならない。また、個別にアプリケーション実装する場合は、上記サーバのF/Wを利用することもできるぽい。(やってない)
websocketプロトコルの仕様
draft75と76でhandshakeの仕様が大きく変わった。そのため、サーバとクライアントで、実装された仕様を合わせなければならない。
対応状況(試した範囲)
draft75
クライアント:chrome5系 サーバ:rev-websocket
draft76
クライアント:chrome6系(β)、web-socket.js サーバ:mojo、rev-websocket
⇒新しい仕様であることも踏まえると、draft76対応にしたほうがよい。chrome5系が使えないのがネックだが・・・。
socket-policyファイルについて
現状chrome6系を導入している人はあまり多くないと思うので、web-socket.jsに対応させたほうがいいと思われる。そのためにsocket-policyを導入しなければならないが、基本的には
有効なWikiNameではありません - namespace gimite
に書いてある通りにすればよい。ubuntuを使っている場合、inetdにopenbsd-inetdとxinetdの選択肢があるが、上記サイトの手順に従う場合はopenbsd-inetdを導入する。
F/W選定
イコールサーバ選定ということである。
mojo
perl。get/postとwebsocketを一つのポートで使えるみたい。mojolicious::liteを使った場合、静的ファイルの置き場所が分かりにくいが、スクリプトの置いてあるディレクトリにpublicを作ると、そこがdocrootになる。
rev-websocket
ruby。webrickとwebsocketサーバを別々に立てるので、get/post用に別ポートを開放する必要がある?それだったらapache+rev-websocketという選択肢もありそうだが、ポータビリティが下がるか。そもそものポータビリティはmojoに劣る気がする。利点がdraft75にも対応できるくらいしかないか・・・?
そろそろ
webサーバくらい書けるようになっておかねばなりますまい。
ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道
- 作者: 青木峰郎
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2005/07/27
- メディア: 単行本
- 購入: 35人 クリック: 450回
- この商品を含むブログ (150件) を見る