gpt4 book ai didi

javascript - Socket.io emit() 延迟/缓冲区刷新?

转载 作者:行者123 更新时间:2023-12-04 12:50:38 25 4
gpt4 key购买 nike

我正在使用 socket.io 向浏览器发送消息。在 node.js 方面,我正在做

socket.emit('message', data);

在浏览器端我正在做

socket.on('message', handleData);

现在一切正常。出于测试目的,我手动触发(从 Node 检查器控制台)socket.emit()。我可以这样做 2-3 次,之后下一条消息需要很长时间才能传递。大约 10 秒。

我的信息很短。压缩已启用,对象 JSON {"could be about": "this long"}。当使用较长的字符串进行测试时,所有消息都会立即发送。所以这与缓冲/优化有关,但在我们的例子中,立即发送所有消息很重要。

有人对这种延迟有任何了解吗?谢谢

最佳答案

官方文档 (v4.0) 的链接:

https://socket.io/docs/v4/client-offline-behavior/

确实有三种方法可以在客户端对抗缓冲:

  • use the connected attribute of the Socket instance
if (socket.connected) {
socket.emit( /* ... */ );
} else {
// ...
}
  • use volatile events
socket.volatile.emit( /* ... */ );
  • empty the internal buffer upon reconnection
socket.on("connect", () => {
socket.sendBuffer = [];
});

关于 volatile emits 的文档:

https://socket.io/docs/v4/emitting-events/#Volatile-events

关于javascript - Socket.io emit() 延迟/缓冲区刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39373265/

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