Files
FSE-Ticket.sys/debug-socket-polling-400.md
T
Henry_Du 2ddcd18e1e feat(socket): 添加 Socket 运行时调试日志及轮询 400 错误调试文档
- 更新 web/index.html 中 index.js 的资源版本为 v6 以清除旧缓存
- 在 web/index.js 中新增 Socket 运行时日志上报逻辑,捕获并上报连接、断开、错误及重连事件
- 新增调试文档记录生产环境 Socket.IO polling 400 错误的问题、现象与排查计划
2026-06-21 15:39:59 +08:00

27 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# [OPEN] debug-socket-polling-400
## 问题描述
- 生产环境后台页持续出现 Socket.IO polling 400。
- 浏览器控制台可见大量:
- `GET /socket.io/?EIO=4&transport=polling&sid=... 400`
- `POST /socket.io/?EIO=4&transport=polling&sid=... 400`
- 同时存在无关但可观察现象:
- `vue.global.js` 开发版提示
- `/favicon.ico` 404
## 已知现象
- 首次 `polling` 握手能拿到 `sid`,后续带 `sid` 的轮询请求失败。
- 失败后客户端持续重连,表现为“连接一下又断开”。
## 初始假设
- 假设 1:反向代理或负载均衡未做会话保持,导致同一个 `sid` 的后续请求落到不同后端实例。
- 假设 2CDN/边缘代理对 `/socket.io/` 的长轮询处理不稳定,导致 `sid` 生命周期被中断。
- 假设 3:客户端当前传输策略触发了不兼容的重连路径,反复创建新 `sid` 又迅速失效。
- 假设 4:服务端 Engine.IO 对同一会话的请求顺序或超时异常敏感,导致后续 `GET/POST` 被判无效。
- 假设 5`vue.global.js` 开发版提示和 `favicon.ico` 404 只是噪音,不是 Socket.IO 400 的主因。
## 当前计划
- 先继续收集线上现成证据,不改业务逻辑。
- 对比首次握手与后续 `sid` 请求是否稳定落到同一服务链路。
- 若证据仍指向服务端/代理层,再决定是否做最小客户端降级或服务端兼容修复。