我正在使用node.js和socket.io播放。这是我正在编写的代码:

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

一切都正确导入。 gameId 正确设置了 io 变量已正确初始化。运行此代码(尝试访问Localhost/Play)时,我会收到此错误:

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)

如果我评论 var gameMessage 代码行,我没有错误。这就是生成它。

我希望那条线呆在那里,因为它实例化了我需要的频道。这样,两个人可以一起玩我的游戏。如果我不实例化并尝试在客户端运行一些代码

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

当第二个玩家连接时,我会在控制台中获得无限误差循环。

有人可以猜测这是怎么回事?谢谢。

有帮助吗?

解决方案

您所做的是错的,您不应该将该socket.io代码放入您的路线中,express.js apps and socket.io应用程序不会像这样“连接”。

使用您的socket.io服务器进行单独的文件,然后使用 socket.io-client 当您要连接到socket.io时(从服务器端或客户端端)发送消息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top