Ale*_*int 6 google-chrome websocket
我有一个应用程序,在其中我从浏览器(在我的例子中是 Chrome)打开一个 websocket 到服务器,然后我开始从服务器端向浏览器发送消息。我发现,当我从服务器发送消息太快时,消息开始在浏览器端缓冲。这意味着浏览器“落后”并最终处理服务器很久以前发送的消息,这在我的应用程序中是不可取的。
我已经排除了以下可能发生缓冲的候选者:
服务器。我可以完全终止服务器进程,并且我看到我的 javascript 代码继续接收消息几分钟,因此服务器进程内部不会发生缓冲。
网络。当在与 Web 浏览器相同的计算机上运行服务器时,我可以重现相同的问题,并且我发送的数据量远远低于与本地主机的 TCP 连接的带宽限制。
这就离开了浏览器。有什么方法可以(a)确定 chrome 为我的 websocket 维护的缓冲区大小,或者(b)减小该缓冲区的大小并导致 chrome 丢帧?
当 Javascript 完成的处理很简单时,Chrome 可以通过 WebSocket 每秒处理超过 50 MB。所以听起来你正在做的处理并不简单。您可以在 onmessage 处理程序中删除太旧的消息(但请记住,客户端上的时钟可能与服务器上的时钟不同步)。
如果浏览器的主线程始终繁忙,即使丢弃消息也可能不足以跟上。我推荐 Chrome Devtools 中的“性能”选项卡,这是查看应用程序将时间花在哪里的好方法。
| 归档时间: |
|
| 查看次数: |
3162 次 |
| 最近记录: |