如果几乎同时发送Socket.io'组合'数据包吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果几乎同时发送Socket.io'组合'数据包吗?相关的知识,希望对你有一定的参考价值。
例如,如果NodeJS服务器具有以下代码:
socket.emit('msg', { data: 'abc123' });
socket.emit('msg', { data: 'aaaaa' });
socket.emit('another_event', { data: 'ooooo' });
socket.emit('yet_another_event', { data: '555' });
是否总会有4个单独的数据包发送到客户端?或者Socket.io会尝试将数据包“组合”成一个数据包,然后客户端的Socket.io将“分离”单个数据包,以便它们由适当的io.on()
监听器处理?
答案
我希望我完整理解你的问题。
socket.io所做的是“多路复用”这些数据包,这意味着它们将通过同一个通道发送。出于不同原因,这些分组不是同时发送/不组合在单个分组中。一,它在带宽方面存在风险。如果您有5个50kb的数据包怎么办?如果网络出现故障或丢包,您将丢失整个5个数据包而不是一个数据包。现在这不是问题,但是如果我们说的是更大尺寸的数据包,那么它就成了一个问题。
根据传输的性质,分组应该串行传输。您可能感兴趣的是这些数据包有时不会以相同的顺序到达,但是它们会被协议重新组合。在TCP / IP的情况下,这些数据包将在转发到应用程序之前重新组装。
您可能想了解connectionless vs connection-oriented以了解您是否需要发送所有数据包,或者它们可以单独发送。
以上是关于如果几乎同时发送Socket.io'组合'数据包吗?的主要内容,如果未能解决你的问题,请参考以下文章