我正在使用websockets将来自服务器的视频图像传输到客户端,该客户端是一个HTML页面.我在下面分享的经验是Chrome.
我通过websocket的onmessage处理程序接收图像.在接收图像时,我可能需要异步完成许多任务才能显示图像.即使这些任务没有完成,另一个onmessage()可能会触发.我不想排队图像,因为此时我无法像服务器正在进行那样快速地进行,因为显示旧图像毫无意义.我也不想放弃这些图像,我根本不想接收它们.
如果客户端使用传统的TCP连接,它将停止从连接中读取.这将导致接收缓冲区被填充,接收窗口被关闭,并最终暂停在服务器上发送图像.一旦客户端开始读取,接收缓冲区将清空,接收窗口将打开,服务器将恢复传输.每次我的服务器开始发送图像时,它会选择最新鲜的图像.这种选择最新鲜的行为以及TCP的流量控制确保了在许多情况下的合理行为.
是否可以通过websockets获得TCP的流量控制功能,其中websockets基于?我特别感兴趣的是一个依赖于TCP流控制而没有应用程序级流控制的解决方案,因为这往往会产生不必要的额外延迟.