socket.io给出node.js / express.js的问题
题
我正在使用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时(从服务器端或客户端端)发送消息。
不隶属于 StackOverflow