SocketIO-GET http:// localhost:3000 / socket.io /?EIO = 3&transport = polling&t = 1418187395022-0 404(Not Found)

我使用express的socketIO。

在我的项目中,我有一个login页面和一个主页。 当我成功login我导航到本地主机:3000 /家,我得到这个错误:

GET http://localhost:3000/socket.io/?EIO=3&transport=polling&t=1418187395022-0 404 (Not Found) 

我没有做任何修改我的app.js(由快递创build的项目)。

Index.js:

 var express = require('express'); var router = express.Router(); var http = require('http'); var fs = require('fs'); var io = require('socket.io')(http); /* GET home page. */ router.get('/', function(req, res) { res.render('index', { title: 'Express' }); }); router.get('/home', function(req, res) { res.render('home', { title: 'Express' }); }); io.on('connection', function(socket){ console.log("User Connected"); socket.on('chat message', function(msg){ io.emit('chat message', msg); console.log("Message"); }); socket.on('disconnect', function(msg){ console.log("User DisConnected"); }); }); router.post('/authenticate', function(req, res) { fs.readFile("./public/Verification/Users.json", "utf8", function (err, data) { if (err) console.log(err); else{ var result = JSON.parse(data); for(var i=0;i<result.Users.length;i++){ if(req.body.username == result.Users[i].username && req.body.password == result.Users[i].password){ console.log("Success!!!!!!!!!!!!!!"); res.location("home"); res.redirect("home"); } } } }); }); module.exports = router; 

无论何时导航到localhost:3000 / home,我都会收到此错误。 我对socketIO和express都是新手。 请告诉我,如果我失去了一些东西。

谢谢

编辑

在我的layout.jade中,我定义了这样的socketio:

 script(src='https://cdn.socket.io/socket.io-1.2.0.js') 

如果你正在运行Express 4,在我看来,你错过了代码行:

 var app = express(); var server = app.listen(3000); 

这将启动您的Web服务器,并将其设置为3000端口。请参阅骨骼简单的Express 4应用程序在这里: http : //expressjs.com/4x/api.html

然后,启动socket.io,你可以添加:

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

而且,这条线不需要:

 var http = require('http'); 

因为我在过去的5个小时里一直在和这个问题斗争。 这是谷歌的第一个结果。

当然,其2015年和一些代码已经改变。

我认为目前index.js代码最好的开始是:

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

该命令是非常重要的。

我的问题是,一切安装正确,节点正在聆听。 但是example.com/socket.io/socket.io.js和example.com/socket.io/?eio= …是404找不到的。 但是,当我尝试example.com:3000/socket.io/socket.io.js一切正常。 所以现在是这个问题,如何改变getJSON查询有端口的一部分。

所以解决的方法是编辑main.js,将其添加到您的聊天所在的index.html中。 有:

 var socket = io(); 

被replace

 var socket = io.connect('http://example.com:3080'); 

这纠正了getJSON查询的URL,并添加了正确的端口,没有更多的404。我希望它可以帮助未来的人。