透過 WebSocket 串流日誌
目的:透過 WebSocket 訂閱來消費即時日誌。
前置條件
- JsonLog 服務可連線。
- WebSocket 用戶端支援查詢參數與驗證標頭。
- 私有頻道需提供頻道擁有帳戶的有效 Bearer 權杖。
API/Script 流程
- 開啟公開串流:
GET /ws升級。
- 開啟頻道串流:
GET /ws?cid=<channel_id>。
- 套用等級篩選:
GET /ws?level=error或GET /ws?cid=<channel_id>&level=warn。
- 對私有頻道:
- 在升級請求中加入
Authorization: Bearer <token>。
- 在升級請求中加入
HTTP/curl 流程
curl 無法完成 WebSocket 流程。請使用 wscat 等 WebSocket 客戶端:
JSONLOG_BASE_URL="ws://localhost:3002"
ACCESS_TOKEN="<optional_account_token>"
# 公開串流
wscat -c "${JSONLOG_BASE_URL}/ws"
# 帶等級篩選的公開串流
wscat -c "${JSONLOG_BASE_URL}/ws?level=error"
# 頻道串流
wscat -c "${JSONLOG_BASE_URL}/ws?cid=svc-api"
# 私有頻道串流(已驗證)
wscat -c "${JSONLOG_BASE_URL}/ws?cid=private-api" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
驗證
- 初始訊息包含該串流範圍的緩衝日誌陣列。
- 私有頻道升級缺少權杖會回傳
401。 - 私有頻道升級使用錯誤帳戶權杖會回傳
404。