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 のようなクライアントを使ってください:
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。