jim800121chen
dc6ca211ae
feat(ws): tunnel WS forward — 推論結果經 tunnel 推回雲端(後端塊2)
推論工作區後端塊2:實作 WS forward,讓 local agent 的推論結果 WS
(inference:<deviceId>)經 tunnel 推回雲端瀏覽器 canvas overlay。照
edge-ai-platform POC relay/server.go proxyWebSocket 移植(唯讀參考)。
- forwarder.go ForwardWebSocket:OpenStream→寫 upgrade→讀 101→WebSocketConn
(新增 WebSocketConn/wsUpgradeError/AsWSUpgradeError)
- proxy.go newWebSocketProxyHandler:hijack browser→回寫 101→雙向 io.Copy
cross-close(無 goroutine leak)+ copyWebSocketUpgradeHeaders(保留
Sec-WebSocket-*、剝 Authorization/Origin)
- camera.go registerWebSocketRoutes:GET /ws/devices/:id/inference
- api.go wsAuthGroup(/ws + AuthMiddleware):same-origin cookie 認證,
無 token-in-URL(security 定案)
- stubs.go:移除 WS inference 501 stub、更新過時 doc comment(Mi-1/2)
架構差異:POC 單 binary,visionA api-server(auth)+remote-proxy 雙 binary,
remote-proxy raw byte pipe 透明穿過 WS upgrade bytes。local agent 端未動。
認證/授權(security 定案 + S1/S2):same-origin cookie、剝 Auth/Origin、
WS 不套 300s timeout、走 pickActiveSessionToken(帶別人 deviceId 也只打到
自己 tunnel;多租戶嚴格綁定屬 Phase 1 M2 debt)。
Reviewer 0C/1M/3Mi 通過(修後)。Major-1 已修:收窄 all_endpoints_require_auth_test
的 /ws/ 白名單,讓 authed inference WS 納入「無 cookie 應 401」回歸檢查
(附守得住證明:移除 auth 測試即 FAIL)。+forwarder 5 test + camera_ws
端到端四層真連線雙向 pipe。build/vet/全回歸綠。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 04:56:54 +08:00
..
2026-05-01 11:21:20 +08:00
2026-07-09 04:56:54 +08:00
2026-05-01 11:21:20 +08:00
2026-05-01 11:21:20 +08:00
2026-07-09 04:36:06 +08:00
2026-07-09 04:56:54 +08:00
2026-07-09 04:56:54 +08:00
2026-05-01 11:21:20 +08:00
2026-05-16 18:56:01 +08:00
2026-05-16 19:16:28 +08:00
2026-05-01 11:21:20 +08:00
2026-06-20 18:28:04 +08:00
2026-06-20 18:28:04 +08:00
2026-06-21 06:36:35 +08:00
2026-06-21 06:36:35 +08:00
2026-06-20 18:28:04 +08:00
2026-06-20 18:28:04 +08:00
2026-06-20 18:28:04 +08:00
2026-05-01 11:21:20 +08:00
2026-05-01 11:21:20 +08:00
2026-06-27 06:18:05 +08:00
2026-06-28 07:38:25 +08:00
2026-06-28 07:38:25 +08:00
2026-06-28 07:38:25 +08:00
2026-06-27 03:18:59 +08:00
2026-06-27 03:18:59 +08:00
2026-06-21 06:36:35 +08:00
2026-06-21 06:36:35 +08:00
2026-06-21 06:36:35 +08:00
2026-05-01 11:21:20 +08:00
2026-06-21 06:36:35 +08:00
2026-06-28 07:38:25 +08:00
2026-07-09 04:27:49 +08:00
2026-07-09 04:56:54 +08:00
2026-06-21 06:36:35 +08:00
2026-05-01 11:21:20 +08:00
2026-07-09 04:56:54 +08:00
2026-05-01 11:21:20 +08:00
2026-06-20 18:28:04 +08:00
2026-06-20 18:28:04 +08:00
2026-06-20 18:28:04 +08:00