Appearance
OpenClaw Slack socket-mode 连接变陈旧:ping/pong 超时导致反复重启
问题
使用 Slack socket-mode 渠道时,Gateway 日志反复出现 pong timeout 错误,随后触发 stale-socket 重启,但重启后问题依然循环出现:
[WARN] Slack: pong timeout - connection stale, restarting...
[INFO] Slack socket-mode: restarting connection...此问题从 OpenClaw 2026.4.1 起作为回归引入,Windows Server 环境尤为明显。健康监控正确触发了重启,但根本原因(ping 超时阈值过短)未被修复,导致重启后继续循环。
根本原因:WebSocket 客户端的 ping 超时设定为 5000ms,在网络延迟稍高的环境(Windows Server、部分云主机)下,pong 响应未能在窗口内到达,健康监控误判连接陈旧。同时,stale-socket 重启缺少指数退避,导致连续快速重启反而加重问题。
关联 PR:#68253(社区提交修复,等待合并)。
解决方案
方案一:临时提高 ping 超时(配置文件)
在 OpenClaw 配置中调整 Slack socket-mode 的超时参数:
json5
{
"channels": {
"slack": {
"socketMode": {
"pingTimeoutMs": 15000,
"reconnectBackoffMs": 2000
}
}
}
}调整后重启 Gateway:
bash
openclaw gateway restart方案二:检查 stale-socket 重启日志频率
确认问题是否由 ping timeout 引起:
bash
openclaw logs --follow | grep -E "pong timeout|stale|restarting"若每隔 5 秒出现一次 pong timeout,说明是阈值问题;若随机出现,可能是网络间歇性中断。
方案三:等待官方修复
社区 PR #68253 直接针对此问题提交了修复(增加 ping 超时 + 指数退避)。关注合并进度:
bash
# 临时验证当前版本是否已含修复
openclaw --version2026.4.1 之前版本不受此问题影响,若急需稳定可回退。
常见问题
Q: 为什么 Slack 渠道反复重启但其他渠道(如 Telegram)正常?
A: Slack socket-mode 使用 WebSocket 长连接并依赖定期 ping/pong 心跳,对网络延迟更敏感。Telegram 使用 HTTP 轮询,不依赖 pong 响应。
Q: 配置 pingTimeoutMs 后重启次数减少了,但偶尔仍出现一次,正常吗?
A: 正常。网络质量下降时偶发一次重启属于预期行为,只要不出现连续循环重启(每分钟多次)即可认为已缓解。
Q: Windows Server 环境比 Linux 更容易触发是为什么?
A: Windows Server 的 TCP 栈默认 ACK 延迟策略与 Linux 不同,加上 Node.js 在 Windows 上的事件循环精度稍低,整体 pong 响应时间会比 Linux 长约 20-50ms,更容易踩到 5000ms 阈值边缘。