node.js和socket.io:不同“会话”的不同连接

时间:2012-05-05 16:32:17

标签: sockets node.js socket.io

我有一个node.js应用程序,可以向用户“传输”推文。目前,它只是在Twitter上搜索一个硬编码字符串,但我想允许用户在URL中配置它(例如访问/?q=stackoverflow)。

目前,我的代码看起来有点像这样:

app.get('/', function (req, res) {

    // page rendering skipped

    io.sockets.on('connection', function (socket) { 
        twit.stream('user', {track: 'stackoverflow'}, function(stream) {
            stream.on('data', function (data) {
                socket.volatile.emit('tweet', data);
            }
        });
    });
});

问题是,如何让每个用户都能看到不同的推文流同时?目前,它在单个浏览器选项卡中工作正常,但只要打开第二个选项卡就会崩溃 - 而且在socket.io内部的错误相当深。我在滥用它吗?

我还没有完全理解socket.io,所以这可能是问题所在。

提前致谢!

1 个答案:

答案 0 :(得分:0)

每次有新请求进入时,您都在使用io.sockets.on重新定义连接回调 - 在io对象的初始化语句之后,您应该将该代码块移到app.get之外。