You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Socket.io中pingInterval配置无法实现连接状态恢复问题咨询

Socket.io v4连接状态恢复:内置pingInterval无法替代手动ping事件?

我正在测试Socket.io v4的连接状态恢复功能,原本以为Socket.io的内置pingInterval配置会自动处理ping/pong发送,能替代示例中的手动定时发送ping事件代码:

setInterval(() => {
  io.emit("ping", new Date().toISOString());
}, 1000);

但当我使用如下服务器配置、且不添加上述手动setInterval代码时,连接状态恢复功能完全无法生效:

const io = new Server(server, { // for work with socket.io
  cors: corsOptions,
  pingInterval: 1000,
  connectionStateRecovery: {
    maxDisconnectionDuration: 2 * 60 * 1000, // 2 mins backup
    skipMiddlewares: true,
  },
});

补充调试信息

客户端配置与监听代码:

const socket = io(
  process.env.REACT_APP_SERVER || "http://localhost:3001",
  {
    reconnectionDelay: 5000, // defaults to 1000
    reconnectionDelayMax: 5000, // defaults to 5000
  }
);
socket.on("connect", () => {
  console.log(socket.recovered); // true only for setInterval method
});
socket.io.on("ping", () => {
  console.log("ping from pingInterval only");
});
socket.on("ping", () => {
  console.log("ping from setInterval only");
});

测试现象:

  • 仅使用手动setInterval发送ping事件时,socket.recovered的值为true;
  • socket.io.on("ping")仅在配置服务器pingInterval时触发;
  • socket.on("ping")仅在使用手动setInterval方法时触发。

内容的提问来源于stack exchange,提问作者chung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:22:10