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

我有一个node.js应用程序向用户“推送”推文。 目前,它只是searchTwitter的硬编码string,但我想让用户在URL中configuration(例如通过访问/?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); } }); }); }); 

问题是,如何让每个用户同时看到不同的推文stream? 目前,它在单个浏览器标签中可以正常工作,但是一旦打开第二个标签,它就会崩溃 – 而且错误在socket.io内部是相当深的。 我滥用了吗?

我还没有完全摆脱socket.io,所以这可能是问题。

提前致谢!

每次有新的请求进来,你都用io.sockets.on重新定义了连接callback – 你应该在你的io对象的初始化语句之后,将这段代码移到app.get之外。