expressを使わない理由が無かった

expressとは、よく使われてる表現では「node.js用のsinatra」です。↓の記述を見た瞬間に脊髄反射的にnpm install expressする人も多いはず。

var express = require('express'),
    app = express.createServer();

app.get('/', function(req, res){
    res.send('Hello World');
});

app.listen(3000);

で、こいつはコンフィグで静的ファイルを吐き出すように設定できます。端的に言えば、node.jsとexpressと下の6行のコードがあれば、apache http serverの代わりになるわけです。

var express = require('express'),
    app = express.createServer();

app.configure(function() {
  app.use(express.static(__dirname + '/views'));
});

app.listen(80);

これだけで、viewsディレクトリ以下の静的ファイルを放出するサーバが作れます。
流石にyum install httpdには叶わないですが、node.jsとnpmをインストールしちゃってる人には、ものすごく簡単なのが分かると思います。

本題

重要なのが、↑のコードのexpress#createServerで作られたサーバは、node.js標準のhttpサーバのprototypeを継承して作られたものだと言う事。
そのため既存ライブラリとの組み合わせが非常にスムーズです。socket.ioだと↓のような感じ。

var express = require('express'),
    app = express.createServer(),
    io = require('socket.io');

// express
app.configure(function() {
  app.use(express.static(__dirname + '/views'));
});
app.listen(80);

// socket.io
var socket = io.listen(app);

はい。あとは、viewsディレクトリの中にsocket.ioのクライアントとなるhtmlを突っ込んでしまえば、websocketなサービスが作れてしまいます。あらまぁ。

結論

特に理由が無ければ、express使ったほうが何かと便利そうです。
しかしまぁ、npmが素晴らしいなぁ。上記まで辿りつくのに10分掛からなかったよ。