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

匿名 (未验证) 提交于 2019-12-03 01:18:02

问题:

I am using socketIO with express.

In my project I have a login page and a home page. When i do successful login i navigate to localhost:3000/home where I get this error :

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

I did not do any modification in my app.js(project created by express ).

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

I get this error whenever I navigate to localhost:3000/home. I am new to both socketIO and express. Please tell me if I am missing something.

Thanks

EDIT:

In my layout.jade i defined socketio like this:

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

回答1:

If you're running Express 4, it appears to me like you're missing the lines of code:

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

That will start your web server and set it to port 3000. See the bone simple Express 4 app here: http://expressjs.com/4x/api.html

And, then to start up socket.io, you would add:

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

And, there is no need for this line:

var http = require('http'); 


回答2:

Since I was battling with this issue for the past 5 hours. And this is the first result in google.

Of course its 2015 and some of the code has changed.

I think currently the best start of the index.js code is:

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); 

The order is highly important.

My problem was, that everything was installed properly and node was listening. However the example.com/socket.io/socket.io.js and example.com/socket.io/?eio=... was 404 not found. However, when I tried example.com:3000/socket.io/socket.io.js everything worked. So now was the question, how to change the getJSON query to have the port part.

So the solution was to edit the main.js, that is being added to the index.html, where your chat is. There is:

var socket = io(); 

to be replaced with

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

This corrects the getJSON queries URL and adds the correct port and no more 404. I hope it helps someone in the future.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!