fix(ws): echo WebSocket subprotocol on accept to fix browser handshake
后端 ws_manager.connect/connect_employee 与 ws.py 调用未回显客户端协商的 Sec-WebSocket-Protocol (bearer.{token}),导致浏览器以 'Sent non-empty Sec-WebSocket-Protocol header but no response' 拒绝握手,H5/坐席 WS 实际一直走 3s 轮询兜底而非流式打字机。现回显 subprotocol 修复握手。验证:dev 真实浏览器 E2E 343 帧 typewriter;生产 docker cp 部署后日志显示 H5/坐席 WS 连接 [accepted] 且 连接建立。
This commit is contained in:
@@ -132,8 +132,8 @@ async def websocket_endpoint(
|
||||
# 认证通过,建立连接
|
||||
# ======================================================================
|
||||
|
||||
# 注册连接(内部会调用 websocket.accept())
|
||||
await ws_manager.connect(agent_id, websocket)
|
||||
# 注册连接(内部会调用 websocket.accept(),并回显协商的 subprotocol)
|
||||
await ws_manager.connect(agent_id, websocket, subprotocol=subprotocol)
|
||||
logger.info(f"坐席 WebSocket 连接已认证: agent_id={agent_id}")
|
||||
|
||||
try:
|
||||
@@ -289,8 +289,8 @@ async def h5_websocket_endpoint(
|
||||
# 认证通过,建立连接
|
||||
# ======================================================================
|
||||
|
||||
# 注册员工连接(内部会调用 websocket.accept())
|
||||
await ws_manager.connect_employee(employee_id, websocket)
|
||||
# 注册员工连接(内部会调用 websocket.accept(),并回显协商的 subprotocol)
|
||||
await ws_manager.connect_employee(employee_id, websocket, subprotocol=subprotocol)
|
||||
logger.info(f"H5员工 WebSocket 连接已认证: employee_id={employee_id}")
|
||||
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user