Firefox 下的 Websockets 延迟

Websockets delay under Firefox

我创建了一个简单的 WebSockets 服务器,它每 20 毫秒发送一个小数据包,仅用于测试目的。然后我用纯WebSocket写了一个简单的浏览器客户端api,连接服务器,每次收到数据包就打印Date.now()

var ws = new WebSocket('ws://localhost:8080');
ws.onmessage = function(){ console.log(Date.now()); };

当我在 Google Chrome 中启动客户端时,数据包之间的延迟是一致的,始终在 19 到 21 毫秒之间。当我在 Firefox 下启动它时...呃,延迟在 3 到 114 毫秒之间跳跃。 Firefox 有什么问题,解决方法是什么?默认情况下是否启用某种缓冲?

测试是在 Linux 下的本地主机上完成的,Firefox 版本是 38.0.5,数据包大小是 4 字节,没有额外的代码 运行 所以垃圾收集器不是问题。我也同时启动了两个浏览器,结果是一样的。

经过大量测试,结果很有趣 - console.log Firefox 下的实现是万恶之源。频繁调用它会导致浏览器短暂挂起,从而使所有计时器和事件不同步。在 Firefox 下调试定时事件时,目前最好将日志存储在一个数组中,稍后再打印。