实际发生了什么?
即使在服务器上启用/设置了 pingInterval,也不会触发/触发客户端上的 Pong 事件
https://github.com/Tiboonn/socket.io-fiddle
在上面的 fork 中,socket.io 和 socket.io-client 的版本是 3.0.0,'pong' 事件不起作用。
如果您将 packege.json 中的两个版本都更改为 2.3.0 并重新安装软件包,则“pong”事件正在运行
什么是预期?
我期望在客户端使用以下代码块获得延迟为 ms
socket.on('pong', function (ms) {
console.log(ms)
})
阅读 v3 文档后,我注意到pong
事件已被删除,但在中断更改中未提及。
目前有什么解决方法吗?
在以下提交中也提到了这一点:
https://github.com/socketio/socket.io-client/commit/be8c3141bdbbdfa59c4d0ca4b3149236e200878f
似乎由于 engine.io 删除了此功能...
@hadimostafapour好发现!!! :)
我想我会从你提到的提交中获取代码并自己实现它:D
你好! 您说得对,这应该包含在迁移指南中。
您应该能够通过以下方式重现该行为:
// server-side
io.on("connection", (socket) => {
socket.on("ping", (cb) => {
if (typeof cb === "function")
cb();
});
});
// client-side
setInterval(() => {
const start = Date.now();
socket.volatile.emit("ping", () => {
const latency = Date.now() - start;
// ...
});
}, 5000);
@darrachequesne感谢您提供代码片段!!
在此处添加: https ://socket.io/docs/v3/migrating-from-2-x-to-3-0/#No -more-%E2%80%9Cpong%E2%80%9D-event-for -检索延迟
感谢您的反馈:+1:
最有用的评论
你好! 您说得对,这应该包含在迁移指南中。
您应该能够通过以下方式重现该行为: