Socket.io和Express3 – 404在客户端请求到/socket.io/socket.io.js

我试图从我的节点服务器parsing'/socket.io/socket.io.js'时收到404。 我无法确定为什么。

我的服务器configuration如下所示:

var express = require('express') , engine = require('ejs-locals') , app = express() , http = require('http') , server = http.createServer(app) , io = require('socket.io').listen(server); // use ejs-locals for all ejs templates: app.engine('ejs', engine); app.set('views',__dirname + '/views'); app.set('view engine', 'ejs'); // so you can render('index') app.use(express.static(__dirname + '/public')); //define routes ... app.listen(3000); //socket io io.sockets.on('connection', function (socket) { socket.on('set nickname', function (name) { socket.set('nickname', name, function () { socket.emit('ready'); }); }); socket.on('msg', function () { socket.get('nickname', function (err, name) { console.log('Chat message by ', name); }); }); }); 

在客户端,我有这个:

 <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost:3000'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script> 

我在本地testing(端口:3000)。 Socket代码基本上是从socket.io例子中剥离出来的。 我已经审查了其他职位,似乎无法find我要去哪里错了。 有人可以帮忙吗?

谢谢

得到它了!

HTTP服务器需要在端口上列出(在这种情况下为3000)。然后,我删除了app.listen(3000),因为地址已经被使用,不需要。

谢谢!

 var express = require('express') , engine = require('ejs-locals') , app = express() , http = require('http') , server = http.createServer(app).listen(3000) , io = require('socket.io').listen(server);