สตรีม Log ผ่าน WebSocket
วัตถุประสงค์: รับ log แบบเรียลไทม์ผ่านการ subscribe ด้วย WebSocket
เงื่อนไขก่อนเริ่ม
- เข้าถึงบริการ JsonLog ได้
- ไคลเอนต์ WebSocket รองรับ query parameter และ header สำหรับ auth
- สำหรับช่องทางส่วนตัว ต้องใช้ Bearer token ที่ถูกต้องของบัญชีเจ้าของช่องทาง
ลำดับงาน API/Script
- เปิดสตรีมสาธารณะ:
GET /wsupgrade
- เปิดสตรีมตามช่องทาง:
GET /ws?cid=<channel_id>
- ใช้ตัวกรองระดับ:
GET /ws?level=errorหรือGET /ws?cid=<channel_id>&level=warn
- สำหรับช่องทางส่วนตัว:
- ใส่
Authorization: Bearer <token>ในคำขอ upgrade
- ใส่
ลำดับงาน HTTP/curl
curl ไม่สามารถทำ WebSocket flow ได้ครบ ใช้ไคลเอนต์อย่าง 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}"
การตรวจสอบ
- ข้อความแรกมีอาร์เรย์ของ log จากบัฟเฟอร์ในขอบเขตสตรีมนั้น
- upgrade ช่องทางส่วนตัวโดยไม่มี token จะได้
401 - upgrade ช่องทางส่วนตัวด้วย token บัญชีผิดจะได้
404