Socket.io-client: 乒乓延迟似乎不再起作用

创建于 2020-11-10  ·  6评论  ·  资料来源: socketio/socket.io-client

你想要:

  • [x] 报告错误
  • [ ] 请求一个功能

当前行为

实际发生了什么?

即使在服务器上启用/设置了 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)
})

设置

  • 操作系统:Ubuntu 20.04
  • 浏览器:Firefox/Chrome(已测试多个)
  • socket.io 版本:3.0.0

其他信息(例如堆栈跟踪、相关问题、如何修复的建议)

Needs documentation

最有用的评论

你好! 您说得对,这应该包含在迁移指南中。

您应该能够通过以下方式重现该行为:

// 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);

所有6条评论

阅读 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:

此页面是否有帮助?
0 / 5 - 0 等级