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

Estoy usando socketIO con express.

En mi proyecto tengo una página de inicio de sesión y una página de inicio. Cuando hago un inicio de sesión exitoso, navego a localhost: 3000 / home donde obtengo este error:

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

No hice ninguna modificación en mi app.js (proyecto creado por 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<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; 

Recibo este error cada vez que navego a localhost: 3000 / home. Soy nuevo tanto en socketIO como en express. Por favor, dime si me falta algo.

Gracias

EDITAR :

En mi layout.jade definí socketio así:

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

Si está ejecutando Express 4, me parece que le faltan las líneas de código:

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

Eso iniciará su servidor web y lo configurará en el puerto 3000. Vea la aplicación Express 4 simple de hueso aquí: http://expressjs.com/4x/api.html

Y luego, para iniciar socket.io, deberías agregar:

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

Y, no hay necesidad de esta línea:

 var http = require('http'); 

Desde que estuve luchando con este problema durante las últimas 5 horas. Y este es el primer resultado en google.

Por supuesto, su 2015 y algunos de los códigos han cambiado.

Creo que actualmente el mejor comienzo del código index.js es:

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

El orden es muy importante.

Mi problema era que todo estaba instalado correctamente y el nodo estaba escuchando. Sin embargo, el example.com/socket.io/socket.io.js y example.com/socket.io/?eio = … no se encontró 404. Sin embargo, cuando probé example.com:3000/socket.io/socket.io.js todo funcionó. Así que ahora era la pregunta, cómo cambiar la consulta getJSON para tener la parte de puerto.

Así que la solución fue editar main.js, que se está agregando al index.html, donde está su chat. Ahi esta:

 var socket = io(); 

para ser reemplazado con

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

Esto corrige la URL de consultas getJSON y agrega el puerto correcto y no más 404. Espero que ayude a alguien en el futuro.

simplemente llame a la escucha del servidor y con la callback pasé la instancia del servidor al módulo.

parte del archivo bin/www de la aplicación Express

 var server = http.createServer(app); server.listen(port, function () { console.log('app listening on *:' + port); require('../socket')(server); console.log('socket server will be on *:' + port); }); server.on('error', onError); server.on('listening', onListening); 

y así es como mi módulo socket socket.js

 var io = {}; module.exports = (server, serveradmin) => { io = require('socket.io')(server); io.on('connection', function (socket) { console.log(socket + ' a user connected'); }); } 

Todos los oyentes de socket y emites desde aquí.