与使用 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 向特定用户发送消息?

用于大量数据的 WebSockets 与 XHR

使用 websockets 拥有自己的物联网平台

即使网络中断,如何继续在 websockets 中发送消息?

如何从网站向不支持 Websockets 的 MQTT 代理发送消息?