我有连接到远程服务器的websocket客户端。服务器每秒向我发送大量数据(~每秒10 000条短消息)。我如何理解我的websocket客户端将有时间读取所有传入的数据?或者服务器可以理解ws-客户端不读取所有数据,并将放弃连接?当ws-client太慢时,websocket协议将如何工作?
发布于 2019-11-05 09:55:02
底层的websocket传输是TCP,协调不同发送和接收速率的主题称为流控制(它是TCP层的一个特性),这个特定的问题被称为“慢速使用者”(并且在通过TCP发送大量数据(例如金融市场数据)时很常见)。
TCP层允许在通信链路的某些点缓冲,以便如果读取器无法跟上服务器发送的字节,则可以将字节暂时存储在这些缓冲区中(直到客户端能够处理它们)。读取器端和发送方都可以有缓冲区,通常与套接字相关联。然而,这些通常是固定的大小。一旦这些缓冲区已满,服务器在下一次尝试发送一些字节时将面临一个选择:要么放弃连接,要么等待(“块”)直到缓冲区中有空间发送更多字节。
因此,真正的服务器决定,我猜它很可能会放弃连接(否则的风险是,越来越多的内存被消耗在服务器上,因为完全的套接字缓冲区)。
发布于 2021-06-20 15:02:32

通常,websocket客户端响应是而不是慢。为什么您的方法慢,请检查等待方法,不要在中放置等待方法,而True循环
如果将放置在等待上,则响应时间也太长太慢。您可以进行测试,我建议也可以删除、等待方法和编写示例代码,我将看到websocket 客户端有多快。哈哈
https://stackoverflow.com/questions/58706503
复制相似问题