与使用 WebSockets 发送大量消息相比,发送大量消息是不是有很多开销?
Posted
技术标签:
【中文标题】与使用 WebSockets 发送大量消息相比,发送大量消息是不是有很多开销?【英文标题】:Is there much overhead with sending a large quanity of messages versus large messages with WebSockets?与使用 WebSockets 发送大量消息相比,发送大量消息是否有很多开销? 【发布时间】:2012-06-07 00:24:53 【问题描述】:我知道对于 html 和发送数据,我们鼓励不经常发送大量数据,因为与标题、内容、标签、到期日期、cookie 等相关的开销。为了更好的用户体验和更少的延迟,最好不经常发送大消息而不是经常发送小更新。
但是,WebSockets 就是这种情况吗?现在在我的网页上,我经常非常发送大量像素数据,因此客户不会遇到太多的波动。但是,如果我不经常发送更新会更好吗?
我想我的问题归结为:“使用 WebSockets,不经常发送大消息比频繁发送小消息更有效吗?”我想我听说该技术摆脱了与发送和接收消息相关的大部分开销,因为它保持恒定连接并且是全双工的,等等。
感谢阅读。
编辑:帮助计算机
【问题讨论】:
【参考方案1】:我想说的主要一点是,健谈与矮胖的接口不限于技术堆栈(WebSockets、HTTP、UDP、其他网络相关协议)。它们都具有相同的属性,并且必须以类似(如果不相同)的方式权衡许多请求与较大请求的影响。 Here is a great article 了解有关该主题的更多信息。
最后要注意的是,您的应用程序的性质也会对您的决定产生最大的影响。一个实时股票交易系统将比一个简单的用户输入表单更加健谈。
编辑
这是一个与 WebSocket 性能相关的类似问题:HTTP vs Websockets with respect to overhead
【讨论】:
感谢阅读,我想我会选择一个厚实的界面。【参考方案2】:发送大小
由于 WebSocket 是一个基于 TCP 的协议,由于流/动态窗口大小的调整,快速发送许多小消息将分批成较大的 TCP 段和无论如何发送的 IP 数据包。在网络上,它类似于更慢地发送大型 WS 消息。
当然,这只适用于异步发送的情况,即在发送另一条消息之前无需等待已发送消息的响应。
【讨论】:
以上是关于与使用 WebSockets 发送大量消息相比,发送大量消息是不是有很多开销?的主要内容,如果未能解决你的问题,请参考以下文章
使用Spring STOMP websockets向单个人发送消息
如何使用 websockets 通过 Flask 向特定用户发送消息?