[node.js]express-mvc-bootstrap + socket.io

MVCな開発がしたくてexpress-mvc-bootstrapをinstallしたけど、socket.ioをどう使うか調べたMemo.

環境はnode.js v0.4.7, express v2.3.10, express-mvc-bootstrap v0.1.2, socket.io v0.6.18

今までは次のようなCommandで実行していたけど、socket.ioを利用するためにはexpress.createServerしたInstanceを渡さないといけない。詳しくはOfficial Document

# ../node_modules/express-mvc-bootstrap/eb server

しょうがないのでこのScriptを参考にapp.jsと同じDirectoryにserver.jsを作って、次のようなScriptを書いた。

/**
* server.js
*/
var port = 3000;

var io = require('socket.io')

var server = require('./app').boot();
server.listen(port);
console.log('\r\n\x1b[36mApplication started on port:\x1b[0m ' + port);

//
// start up socket.io
var io = io.listen(server)
     , buffer = [];

io.on('connection', function(client){
    client.send({ buffer: buffer });
    client.broadcast({ announcement: client.sessionId + ' connected' });

    client.on('message', function(message){
        var msg = { message: [client.sessionId, message] };
        buffer.push(msg);
        if (buffer.length > 15) buffer.shift();
        client.broadcast(msg);
    });

    client.on('disconnect', function(){
        client.broadcast({ announcement: client.sessionId + ' disconnected' });
    });
});

今のところsocket.ioのExampleをそのまま利用。

実行するのは
# node server.js

本当はsocket.ioもcontrollerで受け取るような仕組みにしたい。それはまた今度考える。

 

< Related Posts >

[node.js]node-inspectorを使ってdebugする(express-mvc-bootstrap)
[node.js]MVCな開発がしたくて「express-mvc-bootstrap」をInstallしてみた
WebSocket, node.js, Socket.IOって何?