読者です 読者をやめる 読者になる 読者になる

【Node.js】express4 + socket.io で socket.io.js が 404 not found になる。

socket.io のチュートリアルで以下のコードがあるけど、
socket.io.js が 404 not found になる。

<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io();
</script>

これの解決策は以下にありました。
http://stackoverflow.com/questions/16981396/get-http-localhost3000-socket-io-socket-io-js-404-not-found

上記のエラーが出る段階だと
expressのエントリーポイントである www に
以下のコードを追記してあると思う。

var io = require('socket.io')(http);
io.on('connection', function(socket){
  console.log('a user connected');
});

自分はこんな感じにしていました。

/**
 * Create HTTP server.
 */
var server = http.createServer(app);

//socket.io
var io = require('socket.io')(http);
io.on('connection', function(socket){
  console.log('a user connected');
});

/**
 * Listen on provided port, on all network interfaces.
 */
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

socket.io のrequire部分を以下に修正する。

                                    • -

var io = require('socket.io').listen(server);
io.on('connection', function(socket){
console.log('a user connected');
});

                                      • -

こんな感じで微妙に違う・・・。
var io = require('socket.io')(http);

var io = require('socket.io').listen(server);

こうするだけで src="/socket.io/socket.io.js" が動作するようになる。
なんか不思議・・・。