From 2ddcd18e1e9b68d963e01e6c22b5440828876e58 Mon Sep 17 00:00:00 2001 From: HenryDu8133 <813367384@qq.com> Date: Sun, 21 Jun 2026 15:39:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(socket):=20=E6=B7=BB=E5=8A=A0=20Socket=20?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E6=97=B6=E8=B0=83=E8=AF=95=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=8F=8A=E8=BD=AE=E8=AF=A2=20400=20=E9=94=99=E8=AF=AF=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新 web/index.html 中 index.js 的资源版本为 v6 以清除旧缓存 - 在 web/index.js 中新增 Socket 运行时日志上报逻辑,捕获并上报连接、断开、错误及重连事件 - 新增调试文档记录生产环境 Socket.IO polling 400 错误的问题、现象与排查计划 --- debug-socket-polling-400.md | 26 +++++++++++++++ web/index.html | 4 +-- web/index.js | 65 +++++++++++++++++++++++++++++++++++-- 3 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 debug-socket-polling-400.md diff --git a/debug-socket-polling-400.md b/debug-socket-polling-400.md new file mode 100644 index 0000000..71fe293 --- /dev/null +++ b/debug-socket-polling-400.md @@ -0,0 +1,26 @@ +# [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` 的后续请求落到不同后端实例。 +- 假设 2:CDN/边缘代理对 `/socket.io/` 的长轮询处理不稳定,导致 `sid` 生命周期被中断。 +- 假设 3:客户端当前传输策略触发了不兼容的重连路径,反复创建新 `sid` 又迅速失效。 +- 假设 4:服务端 Engine.IO 对同一会话的请求顺序或超时异常敏感,导致后续 `GET/POST` 被判无效。 +- 假设 5:`vue.global.js` 开发版提示和 `favicon.ico` 404 只是噪音,不是 Socket.IO 400 的主因。 + +## 当前计划 +- 先继续收集线上现成证据,不改业务逻辑。 +- 对比首次握手与后续 `sid` 请求是否稳定落到同一服务链路。 +- 若证据仍指向服务端/代理层,再决定是否做最小客户端降级或服务端兼容修复。 diff --git a/web/index.html b/web/index.html index 6777331..438b672 100644 --- a/web/index.html +++ b/web/index.html @@ -1,4 +1,4 @@ - + @@ -933,7 +933,7 @@ - +