socket.io のサンプルを heroku で動かしてみる

http://d.hatena.ne.jp/alpha_neet/20120508/1336497694 の続きです。

環境

node 0.6.12
npm 1.1.4
socket.io 0.9.6

nave を使って node をインストール

2012/05/09 の時点で最新の node のバージョンは 0.7.8 ですが、
socket.io 付属のサンプルが 0.7 以上では動かないので、0.6 系をインストールします。

nave install 0.6.13
nave use 0.6.13
curl http://npmjs.org/install.sh | sh

ちなみに nave usemain をすると、デフォルト選択になって、起動時にいちいち use しなくていいらしい。

socket.io のサンプルを落とす。

cd ~/work(どこでもいい)
npm install socket.io
mv node_modules/socket.io/examples/chat/ .
cd chat

追加ファイル
  • .gitignore
node_modules
  • Procfile
web: node app.js
変更ファイル
  • app.js
@@ -5,7 +5,7 @@
 var express = require('express')
   , stylus = require('stylus')
   , nib = require('nib')
-  , sio = require('../../lib/socket.io');
+  , sio = require('socket.io');
 
 /**
  * App.
@@ -42,7 +42,8 @@ app.get('/', function (req, res) {
  * App listen.
  */
 
-app.listen(3000, function () {
+var port = process.env.PORT || 3000;
+app.listen(port, function () {
   var addr = app.address();
   console.log('   app listening on http://' + addr.address + ':' + addr.port);
 });
@@ -1,5 +1,9 @@
 {
     "name": "chat.io"
+  , "engines": {
+        "node": "0.6.12"
+      , "npm": "1.1.4"
+    }
   , "description": "example chat application with socket.io"
   , "version": "0.0.1"
   , "dependencies": {
@@ -7,5 +11,6 @@
       , "jade": "0.16.4"
       , "stylus": "0.19.0"
       , "nib": "0.2.0"
+      , "socket.io": "0.9.6"
     }
 }

試しにローカルで動かしてみる

npm install
foreman start (or node app.js)

foreman がなければ node app.js で。
http://localhost:5000 か 3000 を開けばチャットが開始されます。

heroku にデプロイしてみる

http://d.hatena.ne.jp/scalar/20120214/1329227856 を参考にしました。

git init
git add .
git commit -m 'first commit'

heroku create --stack cedar --buildpack http://github.com/heroku/heroku-buildpack-nodejs.git
git push heroku master
heroku open

上手く動いたら成功。
ローカルに比べて「Connecting to socket.io server」がちと長いかも。

いつまで立っても動かなかったり、エラーが出たら heroku logs を見てみる。