我可以通过socket.emit发送多少数据?

我可以通过socket.emit发送多少数据?,第1张

我可以通过socket.emit发送多少数据?

Node和socket.io没有任何内置限制。您不必担心的是消息大小,每秒发送的消息数,连接的客户端数和服务器可用带宽之间的关系-换句话说,没有简单的答案。

让我们考虑一条10 kB的消息。如果连接了10个客户端,则服务器必须推送的数据量为100 kB,这是完全合理的。添加更多的客户端,事情变得越来越苛刻:10
kB * 5,000个客户端= 50 MB。

当然,您还必须考虑协议开销的数量:每个数据包,TCP添加约20个字节,IP添加20个字节,以太网添加14个字节,总计54个字节。假设MTU为1500字节,您正在查看每个客户端8个数据包(不考虑重传)。这意味着您将通过网络向每个客户端发送8* 54 = 432字节的开销+ 10 kB有效负载= 10,672字节。

10.4 kB * 5000个客户端= 50.8 MB

在100 Mbps链路上, 如果 能够使链路饱和, 理论上最少 需要4.3秒才能向5,000个客户端传递10
kB消息。当然,在丢失数据包和损坏的数据需要重传的现实世界中,这将花费更长的时间。 __

即使非常保守地估计,要向5,000个客户发送10 kB的时间为8秒,在聊天室中每10-20秒就会收到一条消息也可能很好。

实际上,按照重要性的顺序,它归结为几个问题:

  1. 您的服务器将有多少带宽可用?
  2. 可以同时连接多少个用户?
  3. 每分钟将发送多少条消息?

回答完这些问题后,您可以确定基础结构将支持的消息的最大大小。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5087965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存