node.js + express4.0.0 + Socket.IO

node.js + express4.0.0で、Socket.IOを使いたかった。

問題

  1. Socket.IO本家にある、Using with the Express web frameworkのソースをコピペして重複してるところを削除し、app.jsに追加。
  2. npm startしてコンソールを確認すると下記エラー
Resource interpreted as Script but transferred with MIME type text/plain:   
"http://localhost:3000/socket.io/socket.io.js". 

どうやらSocket.IOサーバーが起動していないみたい。

解決方法

google先生にお伺いを立てたところ、 express + socket.ioによるWebSocket実装方法についてという記事を発見しました。 結果app.jsではなく、/bin/wwwを編集するということが分かり、解決に至りました。

ここからは備忘録

上記記事に掲載されてるソースまるっとコピペで立ち上がる。

// add start
var socketIO = require('socket.io');
// クライアントの接続を待つ(IPアドレスとポート番号を結びつけます)
var io = socketIO.listen(server);

// クライアントが接続してきたときの処理
io.sockets.on('connection', function(socket) {
  console.log("connection");
  // メッセージを受けたときの処理
  socket.on('message', function(data) {
    // つながっているクライアント全員に送信
    console.log("message");
    io.sockets.emit('message', { value: data.value });
  });
  
  // クライアントが切断したときの処理
  socket.on('disconnect', function(){
    console.log("disconnect");
  });
});

var io = socketIO.listen(server);
のlistenの中身をserverにするのがミソっぽいです。