Repository navigation
[Bug] WebSocket 会话被服务端反复关闭,前端「新建会话」死锁(Windows 11 / iOS / Android 全部实测复现) #11471
ChiefToolMan
started this conversation in
General
Replies: 1 comment
|
我试过清空cookie有效 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
环境(2026-10-30 编辑更正)
6.18.18.c1126-trim(厂商自定义)· node v24.18.0 · x86_64 NAS0.2.1-rc.2与0.2.1-rc.5(web profile)两个版本行为一致127.0.0.1:3080)→127.0.0.1:3080;已用无反代纯直连复现,排除代理因素覆盖面:跨 OS、跨浏览器内核,且触发条件精确
实测覆盖 Windows 11、iOS(iPhone 18 Pro)、Android(小米 Pad 7 Ultra / vivo X500) 三个操作系统;iOS 上 Safari(WebKit)与 Edge 双浏览器均复现,Android 上 Edge 与 Chrome 均复现——跨浏览器内核(WebKit / Blink)无豁免,可排除浏览器实现差异。
触发条件明确且一致:点击「新建会话」即触发(多端表现相同);继续在现有会话中对话不受影响(HTTP 通道正常)。「新建会话」是全站唯一强依赖 WS ready 的 UI 操作——WS 处于重连循环时 ready 永远无法达成,前端死等。
现象
受影响设备进入 Web GUI 后:
net::ERR_CONNECTION_ABORTED(/plugins/events)[connection] connection lost, retry #1/api/session/list、/api/session/create、/api/session/prompt全部 200——经 API 直接创建会话、发送消息均成功,坏的只有 WS 之上的实时通道证据:是服务端主动关闭的
反代侧访问日志(记录 WS 升级与关闭方):
对照组(完全相同的链路):macOS 客户端的 WS 存活 23.5 分钟,tcpdump 验证 ping/pong 34:34 正常。
DSH 服务端日志对这些关闭零输出(静默),无法从服务端定位踢出原因。
补充:重启整机无效
重启整个 NAS 主机(进程全新、网络重置、连接状态清空)后问题依旧——排除「进程状态累积」,这是每次新建连接都会发生的持续性问题,不是资源泄漏或长时间运行导致。
版本对比:rc.2 与 rc.5 行为一致
0.2.1-rc.5升级前后行为无变化,并已回滚验证。核心连接链路包逐字节 diff 结果为零变更:dsh-client-connection(server 与 browser 两侧)、dsh-api-gateway、dsh-app-boot、dsh-agent-loop、dsh-base、dsh-api-session-controller全部一致——排除单一版本回归。复现步骤
路径一(最简,无任何代理,已实测复现):
Windows / Android / iOS 浏览器直连
http://<LAN-IP>:3090/?token=<启动输出的token>→ 点「新建会话」→ 复现。路径二(经反代 / HTTPS / 公网映射):同现象。
已排除(全部实测)
方向建议
/api/remote.mux)101 成功,但之后的会话初始化(attach / generation ready)疑似未完成 —— 前端generationReadyTimeoutMs: 15000触发重连,与观察到的反复重连吻合;「新建会话」与欢迎确认等依赖 WS ready 的操作因此死锁All reactions