การเชื่อมต่อ WebSocket (Connection)
การเชื่อมต่อกับ RawPush อาศัยโปรโตคอลมาตรฐานของ WebSocket ที่นักพัฒนาคุ้นเคย (RFC 6455) ไม่จำเป็นต้องดาวน์โหลดหรือติดตั้ง SDK เฉพาะใดๆ
ความเรียบง่ายนี้ช่วยลดขนาดแอปพลิเคชัน (Bundle size) ของคุณให้เล็กที่สุด และยังช่วยให้คุณเขียนโค้ดเชื่อมต่อจากอุปกรณ์ใดก็ได้ ไม่ว่าจะเป็นเบราว์เซอร์, มือถือ, หรืออุปกรณ์ IoT ตราบใดที่ภาษาที่คุณใช้มีการรองรับ WebSocket มาตรฐาน
1. จุดเชื่อมต่อ (Endpoint)
URL สำหรับเชื่อมต่อแบบ Secure (WSS):
wss://api.rawpush.com/ws🔒 การรองรับ SSL (WSS)
เซิร์ฟเวอร์ RawPush รองรับการเชื่อมต่อผ่าน wss:// (Secure WebSocket) เท่านั้น ไม่รองรับ ws:// ปกติ เพื่อป้องกันไม่ให้ข้อมูลการสื่อสารรวมถึง Token ลับของคุณถูกดักจับระหว่างทาง (Man-in-the-Middle Attach) กรุณาตรวจสอบให้แน่ใจว่าอุปกรณ์ของ Client รองรับการเข้ารหัส TLS
2. พารามิเตอร์ที่ต้องแนบ (Query Parameters)
เมื่อเปิดการเชื่อมต่อ คุณจำเป็นต้องแนบ Query Parameter 1 ตัว เพื่อบอกระบบให้รู้ว่า Connection นึ้เป็นของโปรเจกต์ไหน
app_key(อักษรบังคับ) : ใส่ Public Key (pk_xxx) ที่คุณได้จากหน้าโปรเจกต์ Dashboard
ตัวอย่าง URL ที่สมบูรณ์:
wss://api.rawpush.com/ws?app_key=pk_4f9a3...3. รูปแบบข้อมูลที่รับ-ส่ง (Data Envelope)
ข้อมูลทั้งหมดที่วิ่งเข้าและออกจาก WebSocket นี้ จะต้องเป็นโครงสร้าง JSON String เสมอ
โครงสร้างฝั่ง Client ส่งหา Server (Client Commands)
เมื่อคุณสั่งให้ WebSocket ws.send(...) โครงสร้าง JSON จะต้องมีคีย์บังคับ 1 ตัวเสมอคือคำสั่ง cmd:
{
"cmd": "subscribe",
"channel": "updates:feed_1",
"ref": "123"
}โครงสร้างฝั่ง Server ส่งหา Client (Server Events)
เมื่อ RawPush ส่งข้อมูลกลับมาและคุณดักจับด้วย ws.onmessage message จะอยู่ในรูป JSON envelope ที่แบ่ง type ชัดเจน:
{
"v": 1,
"type": "event",
"id": "evt_01HRX...",
"channel": "updates:feed_1",
"event": "data.updated",
"data": {
"status": "success",
"value": 100
},
"sender": {
"session_id": "conn_01HGW...",
"user_id": "user_123"
}
}คีย์หลัก ๆ ที่ต้องเรียนรู้:
v: เวอร์ชันของโปรโตคอล ปัจจุบันคือ1type: แบ่งออกเป็นสามประเภทหลักคือ"event": ข้อมูลจากคนอื่น หรือจากฝั่งยิง Server"reply": คำตอบรับตอบกลับเมื่อเราสั่ง Command ต่าง ๆ"system": ข้อความจากระบบ เช่น "connected", "blocked"
data: เนื้อหา Payload ดิบทั่วไปที่คุณออกแบบโครงสร้างข้างในได้ตามอิสระ
ในบทถัดไป เราจะเจาะลึกคำสั่ง cmd ทุกตัวที่คุณสามารถยิงหา Server ได้
