Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firefox下的WebSocket延迟_Javascript_Firefox_Websocket - Fatal编程技术网

Javascript Firefox下的WebSocket延迟

Javascript Firefox下的WebSocket延迟,javascript,firefox,websocket,Javascript,Firefox,Websocket,我创建了一个简单的WebSockets服务器,它每20毫秒发送一个小数据包,仅用于测试目的。然后,我用纯WebSocket api编写了一个简单的浏览器客户端,它连接到服务器并在每次收到数据包时打印Date.now() var ws = new WebSocket('ws://localhost:8080'); ws.onmessage = function(){ console.log(Date.now()); }; 当我在Google Chrome中启动客户端时,数据包之间的延迟是一致的,

我创建了一个简单的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下的localhost上进行的,Firefox版本为38.0.5,数据包大小为4字节,没有运行其他代码,所以垃圾收集器不是问题所在。我还同时启动了两款浏览器,结果是一样的。

经过大量测试,结果非常有趣-
控制台。在Firefox下实现log
是万恶之源。频繁调用它会导致浏览器短暂挂起,这会使所有计时器和事件失去同步。在Firefox下调试定时事件时,目前最好将日志存储在一个数组中,然后再打印出来。

对于其他任何有相同问题但未与
控制台联系的人来说。log
(和我一样),这在Mozilla的bug跟踪器上被作为bug提出:在Ubuntu上的Firefox 81中,第一次没有延迟,但是如果我刷新页面,在调用
newwebsocket
和FireFox调用WS-server之间会有150-300毫秒的延迟。似乎与是否存在处于打开状态的现有WebSocket对象有关。也许清理工作很慢?在Ubuntu/Windows/Android下的Chrome或Edge中没有此类问题。