リアルタイムWebハッカソン ハンズオン編
リアルタイムWebハッカソン行ってきました。
2010/10/20 19:00から
http://atnd.org/events/8626
node.jsを使いこなす会。
node.jsとnpmのインストール
http://d.hatena.ne.jp/t_43z/20101013/1286957802
http://www.florian-kubis.de/2010/09/howto-install-node-js-on-mac-snow-leopard-with-express/
を参考に。
# install node.js sudo port selfupdate sudo port install nodejs # check rehash node -v # install npm # このあたりを変更する必要があるっぽい sudo chmod -R g+w /opt/local/lib sudo chmod -R g+w /opt/local/bin sudo chmod -R g+w /opt/local/share/man curl http://npmjs.org/install.sh | sh rehash npm -v # install express npm install express # create application mkdir -p nodes/express_reward/ cd nodes/express_reward/
# create app.js file
vi app.js
var app = require('express').createServer(); app.get('/', function(req, res){ res.send('Hello World'); }); app.listen(3000);
# run app.js
node app.js
ExpressとWebSocketを使ったWebSocketのサンプルを作る準備
http://d.hatena.ne.jp/t_43z/20101020/1287545961
# install libraries npm install express jade less socket.io # create sample express sample # run sample cd sample node app.js
# access sample
http://localhost:3000/
# run application with # developer mode (default) NODE_ENV=developement node app.js # production mode (default) NODE_ENV=production node app.js
ExpressとSocket.ioを使ったWebSocketのサンプルを作る
http://d.hatena.ne.jp/t_43z/20101020/1287546022
サンプルをひたすら作り込む。
ExpressとSocket.ioを使ったチャットサンプル
http://d.hatena.ne.jp/t_43z/20101020/1287546063
# 新しいプロジェクトを作って、 # サンプルをひたすら作り込む。 express chat
ExpressとSocket.ioを使ったチャットサンプルを永続化
http://d.hatena.ne.jp/t_43z/20101020/1287546091
http://github.com/meso/chatsample
# install dirty mkdir tmp cd tmp git clone git://github.com/felixge/node-dirty.git cd node-dirty npm install # copy project from chat mkdir persist cd chat tar cf - * | (cd ../persist; tar xpf -) # edit app.js vi app.js
まとめ
ひたすら言われるままに作っていただけだったので、まとめる。
# create project express {project name} # run appilcation # port 3000で動かしているなら、 http://localhost:3000/ で確認できる。 node app.js # codeは、インスタンスにハンドラを設定するイメージ >|javascript| var app = require('express').createServer(); app.get('/', function(req, res){ res.send('Hello World'); }); app.listen(3000); # 環境変数NODE_ENVで動作モードを変更できる。 NODE_ENV=developement node app.js NODE_ENV=production node app.js
ファイルの構成
- コントローラー
app.js
- デザイン
views/layout.jade
- クライアント側JavaScriptのコード。クライアントのHTMLで読み込ませる必要がある。
public/javascripts/client.js
- ローカルホストにつないで、messageが来たら、functionを実行する。
var socket = new io.Socket('localhost'); socket.connect(); socket.on('message', function(message) { //message });
- in app.js, client.broadcast(message)でサーバーから、クライアントにメッセージを通知できる。
socket.on('connection', function(client) { client.broadcast('to client message'); }
感想
最後に時間を取ったおかげで、何とか、中身を理解できた。
動作させるにはJavaScriptを動かせる環境が必須だけど、クライアントにリアルタイムに変更を反映できるから、
コミュニケーションを取るようなアプリケーションに有効そう。
大規模に使ったとき、どの程度耐えられるのか、あたりを少し見てみたい。