通过 WebSocket 流式读取日志
目的:通过 WebSocket 订阅消费实时日志。
前置条件
- JsonLog 服务可达。
- WebSocket 客户端支持查询参数和认证头。
- 对私有频道,需提供频道所属账户的有效 Bearer 令牌。
API/脚本流程
- 打开公共流:
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。