socket.io dando problema con Node.JS / express.js
Domanda
Sto giocando un po 'con node.js e socket.io. Questo è il pezzo di codice che sto scrivendo:
app.get('/play', function (req, res) {
//some code you don't need to see
var gameMessage = io.of('/game'+gameId);
});
tutto è importato correttamente. gameId
sia impostato correttamente e la variabile io
è inizializzato correttamente.
Quando si esegue questo codice (quando si cerca di accedere localhost / play) ottengo questo errore:
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)
Se io commentare la riga var gameMessage
di codice, non ottengo l'errore. Ecco, questo è lo genera.
Vorrei che la linea di rimanere lì perché è un'istanza di un canale che ho bisogno. In questo modo due persone possono giocare insieme il mio gioco. Se non faccio instantiate che e cercare di eseguire del codice sul lato client come
var chat = io.connect('http://localhost/chat' + gameId);
chat.emit('guess', {
guess: "ciao"
});
chat.on('guess', function (data) {
alert(data);
});
ottengo un ciclo infinito di errore nella console come si connette il secondo giocatore.
Qualcuno può indovinare che cosa c'è di sbagliato in questo? Grazie.
Soluzione
Quello che stai facendo è sbagliato, non si dovrebbe mettere quel codice Socket.IO nel vostro itinerario, Express.js Apps e applicazioni Socket.IO non "Connect" del genere.
Crea un file separato con il server Socket.IO, quindi utilizzare socket.io-client quando si desidera connettersi Socket.IO (dal lato server o sul lato client) per inviare un messaggio, per esempio.