node.js + express4.0.0 + Socket.IO
node.js + express4.0.0で、Socket.IOを使いたかった。
問題
- Socket.IO本家にある、Using with the Express web frameworkのソースをコピペして重複してるところを削除し、app.jsに追加。
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にするのがミソっぽいです。