gpt4 book ai didi

javascript - 如果几乎同时发送 Socket.io 'combine' 数据包吗?

转载 作者:搜寻专家 更新时间:2023-11-01 00:03:50 24 4
gpt4 key购买 nike

例如,如果 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 所做的是“多路复用”这些数据包,这意味着所有数据包都将通过同一 channel 发送。由于不同的原因,这些数据包不会同时发送/不会组合在一个数据包中。第一,它在带宽方面存在风险。如果你有 5 个数据包,每个数据包 50kb 怎么办?如果出现网络故障或数据包丢失,您将丢失整个 5 个数据包而不是一个。现在这不是问题,但是如果我们说的是更大的数据包,那么它就会成为问题。

根据传输的性质,数据包应该串行传输。您可能会感兴趣的是,这些数据包有时不会以相同的顺序到达,但是它们会通过协议(protocol)重新组合。在 TCP/IP 的情况下,这些数据包将在转发到应用程序之前重新组合。

您可能想了解 connectionless vs connection-oriented了解您是否需要发送所有数据包,或者它们可以单独发送。

关于javascript - 如果几乎同时发送 Socket.io 'combine' 数据包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53872206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com