【问题标题】:node.js and socket.io: different connections for different "sessions"node.js 和 socket.io:不同“会话”的不同连接
【发布时间】:2012-05-05 16:32:16
【问题描述】:

我有一个 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,所以这可能是问题所在。

提前致谢!

【问题讨论】:

    标签: sockets node.js socket.io


    【解决方案1】:

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

    【讨论】:

    • 但是如果io.sockets.onapp.get 之外,我该如何更改发送到套接字的内容?
    • 不确定你想改变什么,但你确实意识到 app.get 处理 http 请求而 socket.io 处理 websocket 请求对吗?您在不同协议的请求处理程序中定义一个协议的请求处理程序。 node.js 的方式是拥有一个全局状态,您可以传递并修改它..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多