龙空技术网

WebSocket连着不发送数据,一天下来会耗服务器流量吗?耗多少?

点金圣手 28

前言:

此刻兄弟们对“js websocket心跳”都比较关切,朋友们都想要学习一些“js websocket心跳”的相关内容。那么小编在网上汇集了一些有关“js websocket心跳””的相关知识,希望大家能喜欢,兄弟们一起来了解一下吧!

假设心跳间隔设置为5分钟(300秒),每个心跳包包含最小的TCP/IP头部(40字节)和最小的WebSocket帧头部(2字节),那么一天(86400秒)的流量大约是:

websocket一个数据帧最小为16位,两个字节。

如果心跳包不携带任何数据,每一分钟一个心跳,那么一小时是120字节,一天就是120*24=2880字节。大约3kB的流量。

以上为原来的回答

经过评论区各位同学的提醒,在原版的基础作如下优化:

由于websocket属于应用层协议 ,一个心跳包会经过传输层、IP层、链路层、物理层的封装,每一层都会带上各自的包头:

TCP层 :最小20字节

IP层: ipv4 最小20字节,ipv6 最小40字节,这里假设是ipv4

链路层 LLC头 :最小3字节

物理层 以太帧头:最小14字节。

由于以太帧存在最小帧的机制,一般为64字节,减去14字节的以太帧头与4字节的FCS,也就是以太帧中payload的(从链路层到应用层)总的长度,不小于46字节

而物理层以上各层最小数据包: 2 + 20 + 20 + 3 < 46 ,将会在物理层补齐46字节 ,因此,一次websocket的心跳包最长为一个最小的以太帧: 64 字节

每分钟一次心跳,一天总流量约等于:

24 * 60 * 64 ≈ 92160 字节 ≈ 90KB

如果算上服务端的响应包:92160 * 2 ≈ 184320 字节 ≈ 180KB

标签: #js websocket心跳