socket.io给出了node.js / express.js的问题

时间:2011-10-18 09:31:58

标签: node.js socket.io express

我正在使用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);
        });

当第二个玩家连接时,我在控制台中得到一个无限循环的错误。

有人可以猜出这有什么问题吗?感谢。

1 个答案:

答案 0 :(得分:1)

你所做的是错的,你不应该将Socket.IO代码放入你的路线,Express.js应用程序和Socket.IO应用程序不会像那样“连接”。

使用Socket.IO服务器创建单独的文件,然后在要连接到Socket.IO(从服务器端或客户端)连接时使用socket.io-client来发送消息。