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
相关产品推荐
相关产品推荐

