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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top