【问题标题】:Socket.io doesn't work properlySocket.io 无法正常工作
【发布时间】:2012-12-03 14:17:34
【问题描述】:

我制作了一个实时图表,显示每秒的系统负载。它在我的本地机器上运行良好,但是在我将它部署到服务器后,在数据从服务器发回之前有很长的延迟。另外,我除了每秒发送一次数据外,它以不规则的间隔发送数据。

io.sockets.on('connection',function (socket) {
    var sysinfo = setInterval(function(){
        socket.emit('system_info',{
            time:Date.now(),
            load:os.loadavg(),
            memory:os.totalmem()-os.freemem()
        });
    },3000);

    socket.on('disconnect',function(){
        clearInterval(sysinfo);
    });
});

Here is the chart

Here is the source code

【问题讨论】:

  • 真正的问题是什么?
  • 数据到达前有很长的延迟,并且数据以不规则的间隔发回。
  • 如果您检查网络流量,部署时是否仍与 Websocket 连接?也许它正在回退到服务器的另一种传输方式,但在本地系统上使用 Websockets。
  • @loganfsmyth 经过检查,我确实发现它正在退回到 xhr 轮询,但我仍然不明白。是服务器的问题还是我的问题?
  • @user1823713 这可能解释了当时的缓慢。您使用的是什么托管服务?他们支持 websocket 吗?

标签: node.js socket.io


【解决方案1】:

好吧,您已将其描述为“每秒”,但您的时间间隔设置为 3000 或“3。”

对于“不规则间隔”,不保证间隔是准确的。

来自Globals

请注意,实际间隔可能会有所不同,具体取决于操作系统计时器粒度和系统负载等外部因素。它永远不会少于ms,但它可能会更长。

来自Timers

请务必注意,您的回调可能不会在 delay 毫秒内准确调用 - Node.js 不保证回调触发的确切时间,也不保证触发的顺序。回调将在尽可能接近指定的时间被调用。

【讨论】:

  • 很抱歉,我描述错误,但有时我需要等待几分钟才能看到数据返回。
猜你喜欢
  • 1970-01-01
  • 2016-11-26
  • 2012-01-29
  • 1970-01-01
  • 2021-12-10
  • 2017-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多