node.jsとWebSocket
WebSocketは、W3C(World Wide Web Consortium)とIETF(Internet Engineering Task Force)が標準化を進めているクライアント/サーバー間の双方向通信のための規格です。以前はHTML5の仕様の一部でしたが、現在は独立した仕様として標準化が進められています。
チャットや対戦ゲームなど、リアルタイムで通信するWebアプリに適しており、WebブラウザーとしてはGoogle Chrome/Safari/モバイルSafari(iOS4.2以上)でサポートされています(現在のところAndroidでは使用できません)。
node.jsでWebSocketを扱う場合は、「Node WebSocket Server」モジュールを使います。
- Node WebSocket Server
- http://static.brandedcode.com/nws-docs/
Node WebSocekt Serverはシンプルな実装なので扱いが簡単です。npmで以下のようにインストールします。
$ npm install websocket-server
WebSocketの実装としてほかに有名なのが「Socket-IO」というモジュールです。
- Socket-IO
- http://socket.io/
Socket-IOは非同期双方向通信ライブラリーで、WebSocketをサポートしていないブラウザーでも別の非同期通信技術(Flash SocketやLong Pollingなど)を使って通信できます。Socket-IOは以下のようにしてインストールします。
$npm install socket.io
実際の開発ではWebSocket ServerかSocket-IOを選択して実装することになりますが、今回の場合、WebSocketが利用できるiPhone 4にターゲットを絞っており、かつレスポンススピードが要求されることから、Socket-IOでなくWebSocket Serverを採用しました。
WebSocketのクライアント実装用ライブラリーとして、「node-websocket-client」があります。
- node-websocket-client
- https://github.com/pgriess/node-websocket-client
Webアプリ自体には必要になりませんが、node.jsでWebSocketのクライアント/サーバー間の接続をテストするときに役立ちます。
$npm install websocket-client