使用socket.io,我有2个选项。我可以发送许多小包,例如:
socket.emit("data",{515:{x:5,y:6}})
socket.emit("data",{124:{x:3,y:2}})
socket.emit("data",{415:{x:1,y:2}})
socket.emit("data",{135:{x:5,y:1}})
或者我可以发送一个大包:
socket.emit("data",{515:{x:5,y:6},124:{x:3,y:2},415:{x:1,y:2},135:{x:5,y:1}})
考虑到这些数据包每秒发送几次并且包含ping敏感应用程序服务器的大部分带宽使用情况,这两种方法是否存在差异?
答案 0 :(得分:1)
我相信以下链接可以很好地解释数据包的生命周期:
http://www.sdsusa.com/connections/
显而易见的是,对于一个数据包,所有状态(连接,确认,建立,发送等)都会发生一次,而不是发送多个数据包,这些状态必须每个数据包发生一次。更多数据包很可能会导致更长的发送/接收时间,并且会建立更多连接,丢失数据包和丢失连接的可能性会增加,从而导致额外的延迟。
最有可能的是,你采用哪种方法并不重要,因为差异可能只有几毫秒而且不明显。话虽如此,如果您是来自许多客户端的许多数据包,那么您的服务器可能会在尝试每秒处理30或40个数据包时被淹没。此外,如果您关心订单,那么许多数据包将是不可取的,因为无法保证您的数据包将会到达。