Frage

Ich spiele ein bisschen mit Node.js und Socket.io. Dies ist der Code, den ich schreibe:

app.get('/play', function (req, res) {
//some code you don't need to see
var gameMessage = io.of('/game'+gameId);
});

Alles wird richtig importiert. gameId ist richtig eingestellt und die io Variable wird korrekt initialisiert. Beim Ausführen dieses Code (beim Versuch, auf Localhost/Play zuzugreifen), erhalte ich diesen Fehler:

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)

Wenn ich das kommentiere var gameMessage Codezeile, ich erhalte nicht den Fehler. Das erzeugt es also.

Ich möchte, dass diese Zeile dort bleibt, weil sie einen Kanal instanziiert, den ich brauche. Auf diese Weise können zwei Leute mein Spiel zusammen spielen. Wenn ich das nicht instanziiere und versuche, einen Code auf der Client -Seite auszuführen

var chat = io.connect('http://localhost/chat' + gameId);
        chat.emit('guess', {
            guess: "ciao"
        });
        chat.on('guess', function (data) {
            alert(data);
        });

Ich bekomme eine unendliche Fehlerschleife in der Konsole, wenn der zweite Spieler eine Verbindung herstellt.

Kann jemand erraten, was daran los ist? Vielen Dank.

War es hilfreich?

Lösung

Was Sie tun, ist falsch, Sie sollten diesen Socket.io -Code nicht in Ihre Route, express.js -Apps und Socket.io -Apps einfügen, "eine Verbindung nicht so".

Erstellen Sie eine separate Datei mit Ihrem Socket.io -Server und verwenden Sie dann Socket.io-Client Wenn Sie eine Verbindung zu Socket.io (von der Serverseite oder der Client-Seite) herstellen möchten, um beispielsweise eine Nachricht zu senden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top