fix: Host中间件审查修复(本地开发文档/顺序守护测试/ws断连分支/夹具清理)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-12 20:47:01 +08:00
parent eaa5bf7e51
commit fd0f49870c
4 changed files with 32 additions and 7 deletions
+9 -3
View File
@@ -52,10 +52,16 @@ def _host_from_scope(scope: Scope) -> str:
async def _close_ws(receive: Receive, send: Send, code: int, reason: str) -> None:
"""以 close 代 accept 拒绝 WS(ASGI 规范序列: 先收到 websocket.connect,
再回 websocket.close)。reason 中性,不带租户信息。"""
再回 websocket.close)。reason 中性,不带租户信息。
客户端在握手期间放弃时收到的首个事件是 websocket.disconnect 而非
connect——对端已撤,close 送达不了,直接 return。receive 本身抛异常
(传输层断)则向上传播,由外层 ServerErrorMiddleware 记日志:拒绝路径
无任何已建立状态可留,无需也不应再兜一层。"""
event = await receive()
if event["type"] == "websocket.connect":
await send({"type": "websocket.close", "code": code, "reason": reason})
if event["type"] == "websocket.disconnect":
return
await send({"type": "websocket.close", "code": code, "reason": reason})
class TenantHostMiddleware: