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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top