Socket.io Giving Problema con Node.js / Express.js
Pregunta
Estoy jugando un poco con Node.js y Socket.io. Este es el código que estoy escribiendo:
app.get('/play', function (req, res) {
//some code you don't need to see
var gameMessage = io.of('/game'+gameId);
});
Todo se importa correctamente. gameId
está configurado correctamente y el io
La variable se inicializa correctamente. Al ejecutar este código (al intentar acceder a localhost/play), recibo este error:
TypeError: Converting circular structure to JSON
at Object.stringify (native)
at Array.<anonymous> (/path/to/my/game/node_modules/express/node_modules/connect/lib/middleware/session/memory.js:74:31)
at EventEmitter._tickCallback (node.js:126:26)
Si comento el var gameMessage
Línea de código, no recibo el error. Entonces eso lo está generando.
Me gustaría que esa línea permanezca allí porque está instanciando un canal que necesito. De esta manera, dos personas pueden jugar juntas mi juego. Si no instanceo eso e intento ejecutar algún código en el lado del cliente como
var chat = io.connect('http://localhost/chat' + gameId);
chat.emit('guess', {
guess: "ciao"
});
chat.on('guess', function (data) {
alert(data);
});
Obtengo un bucle de error infinito en la consola a medida que el segundo jugador se conecta.
¿Alguien puede adivinar qué tiene de malo esto? Gracias.
Solución
Lo que está haciendo está mal, no debe poner ese código Socket.io en su ruta, aplicaciones Express.js y las aplicaciones Socket.io no "se conectan" así.
Haga un archivo separado con su servidor Socket.io, luego use socket.io-client Cuando desea conectarse a Socket.io (desde el lado del servidor o el lado del cliente) para enviar un mensaje, por ejemplo.