Files
Nexus/docs/changelog/2026-06-10-rdp-ws-relay-single-loop.md
T
Nexus Agent 341b130d9b fix(rdp): guacd 后台读取队列 + 隧道超时与尺寸
独立 guacd reader 避免 WS 竞争丢数据;ping 回显与 sync 已生产验证;前端 90s 超时与 OPEN 后发尺寸。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-10 21:54:50 +08:00

792 B
Raw Blame History

2026-06-10 — RDP WebSocket 单循环中继(修复 Server timeout

摘要

修复 Guacamole 客户端报 Server timeout.:双协程并发 send/receive 违反 Starlette WebSocket 约束,隧道 ping 无法回显;改为单循环中继,并按指令拆分转发。

动机

客户端 receiveTimeout 默认 15s,期间必须收到服务端数据(含 ping 回显)。并发 ws_to_guacd / guacd_to_ws 会导致 ping 丢失。

涉及文件

  • server/infrastructure/guacamole/ws_tunnel.py
  • server/infrastructure/guacamole/protocol.pyiter_raw_instructions
  • frontend/src/composables/rdp/useRdpSession.tsreceiveTimeout=90s
  • tests/test_guacamole_protocol.py

验证

生产:3389 连接不再 15s 超时;guacd 日志有 RDPDR 连接。