Socket.IOを使ってNode.jsでリアルタイムWebアプリを開発する

2013年3月27日(水)
西谷 圭介

はじめに

前回はExpressを利用したWebアプリの開発について簡単に解説をしました。引き続き今回はNode.jsでリアルタイムWebアプリケーションを開発するためのライブラリであるSocket.IOを利用したアプリケーションの開発について簡単に解説します。

なお、今回の記事もアプリケーションのデプロイ先としてeXcale(http://www.excale.net/)を利用します。eXcaleも含めた環境面は前回、前々回で解説ならびに用意した環境を前提としています。従って今回はじめての方は適宜ご自分の環境に読み替えるか、前回の記事を参考に環境のセットアップを行ってください。
→ expressで開発したWebアプリをeXcaleで動かす

Socket.IOとは

Socket.IOとはNode.jsでWebSocketを使ったリアルタイムなWebアプリケーション開発のためのデファクトスタンダードと言えるライブラリです。WebSocketとはリアルタイムな双方向通信を行うための規格ですが、詳細な解説は他に譲ります。

Socket.IOはこのWebSocketを利用するためだけでなく、WebSocketをサポートしていないブラウザや環境の場合では自動的にそれらを検出してxhr-polling接続やその他の方法による代替接続方法による通信を行ってくれます。

eXcaleでのWebSocketサポート

eXcaleでNode.js+Socket.IOを利用する場合には少々注意が必要です。というのも、eXcaleがユーザーのアプリケーション向けに提供しているリクエストルータは。ベータ版である現時点ではWebSocket通信には対応していないからです。

従いまして、Socket.IOを使ったアプリケーションをeXcaleで動かす場合、現時点ではその通信手段はxhr-polling接続になります。といってもコーディングを行う上ではその辺りを意識することはほとんどなく、WebSocketではなくxhr-pollingを利用した通信への切り替えはSocket.IOが自動的に行います。正式サービスの開始までにはWebSocketへ対応する予定となっています。

事前準備

まずは前回の記事で解説したExpressを利用してアプリケーションのひな形を作成していきます。

$ express socket-sample

作成したディレクトリに移動して依存するパッケージをインストールします。

$ cd socket-sample/
$ npm install

Socket.IOをインストールします。

$ npm install socket.io

必要に応じてpackage.jsonにSocket.IOに関する記述を以下のように追記しておくと良いでしょう。packagejsonに記述があれば"npm install"でSocket.IOもまとめてインストールされます。

{
 "name": "socketio-sample",
 "version": "0.0.1",
 "private": true,
 "scripts": {
  "start": "node app"
 },
 "dependencies": {
  "express": "3.0.6",
  "jade": "*",
  "socket.io": "*"
 }
}
TIS株式会社

TIS株式会社所属。金融系基幹システムの開発等に従事したのち、サービス企画・開発を担当。IaaS開発を経て、現在はアプリ開発者のためのPaaS「eXcale」の開発責任者兼プログラマとして活動中。
Twitter:@Keisuke69
eXcale:http://www.excale.net/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています