Google chrome Chrome中的websocket接收缓冲区
我有一个应用程序,我在其中打开一个从浏览器(在我的例子中是Chrome)到服务器的websocket,然后开始从服务器端向浏览器发送消息。我发现,当我从服务器发送消息太快时,浏览器端的消息开始被缓冲。这意味着浏览器“落后”并最终处理服务器很久以前发送的消息,这在我的应用程序中是不可取的 我已经排除了发生这种缓冲的以下可能的候选者:Google chrome Chrome中的websocket接收缓冲区,google-chrome,websocket,Google Chrome,Websocket,我有一个应用程序,我在其中打开一个从浏览器(在我的例子中是Chrome)到服务器的websocket,然后开始从服务器端向浏览器发送消息。我发现,当我从服务器发送消息太快时,浏览器端的消息开始被缓冲。这意味着浏览器“落后”并最终处理服务器很久以前发送的消息,这在我的应用程序中是不可取的 我已经排除了发生这种缓冲的以下可能的候选者: 服务器。我可以完全终止服务器进程,并且我看到javascript代码会在几分钟内继续接收消息,因此缓冲不会在服务器进程内发生 网络。当在与web浏览器相同的机器上运
- 服务器。我可以完全终止服务器进程,并且我看到javascript代码会在几分钟内继续接收消息,因此缓冲不会在服务器进程内发生
- 网络。当在与web浏览器相同的机器上运行服务器时,我可以重现同样的问题,并且我发送的数据量远远低于与localhost的TCP连接的带宽限制
如果浏览器的主线程总是很忙,即使删除消息也可能不足以跟上。我建议使用Chrome Devtools中的“性能”选项卡来查看您的应用程序在哪里花费时间。有什么建议吗?消息时间戳似乎与websocket何时收到消息无关。我会让服务器为每条消息发送一个时间戳。然后,我将尝试使用第一条消息上的时间戳来确定服务器时钟和客户端时钟之间的偏移量。在onmessage处理程序中,我会将消息上的时间戳与服务器时钟的估计值进行比较,如果消息超出某个阈值,则忽略消息。