我正在使用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);
});
当第二个玩家连接时,我在控制台中得到一个无限循环的错误。
有人可以猜出这有什么问题吗?感谢。
答案 0 :(得分:1)
你所做的是错的,你不应该将Socket.IO代码放入你的路线,Express.js应用程序和Socket.IO应用程序不会像那样“连接”。
使用Socket.IO服务器创建单独的文件,然后在要连接到Socket.IO(从服务器端或客户端)连接时使用socket.io-client来发送消息。