Skip to content

การเชื่อมต่อ WebSocket (Connection)

การเชื่อมต่อกับ RawPush อาศัยโปรโตคอลมาตรฐานของ WebSocket ที่นักพัฒนาคุ้นเคย (RFC 6455) ไม่จำเป็นต้องดาวน์โหลดหรือติดตั้ง SDK เฉพาะใดๆ

ความเรียบง่ายนี้ช่วยลดขนาดแอปพลิเคชัน (Bundle size) ของคุณให้เล็กที่สุด และยังช่วยให้คุณเขียนโค้ดเชื่อมต่อจากอุปกรณ์ใดก็ได้ ไม่ว่าจะเป็นเบราว์เซอร์, มือถือ, หรืออุปกรณ์ IoT ตราบใดที่ภาษาที่คุณใช้มีการรองรับ WebSocket มาตรฐาน

1. จุดเชื่อมต่อ (Endpoint)

URL สำหรับเชื่อมต่อแบบ Secure (WSS):

text
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 ที่สมบูรณ์:

text
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:

json
{
  "cmd": "subscribe",
  "channel": "updates:feed_1",
  "ref": "123"
}

โครงสร้างฝั่ง Server ส่งหา Client (Server Events)

เมื่อ RawPush ส่งข้อมูลกลับมาและคุณดักจับด้วย ws.onmessage message จะอยู่ในรูป JSON envelope ที่แบ่ง type ชัดเจน:

json
{
  "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: เวอร์ชันของโปรโตคอล ปัจจุบันคือ 1
  • type: แบ่งออกเป็นสามประเภทหลักคือ
    • "event": ข้อมูลจากคนอื่น หรือจากฝั่งยิง Server
    • "reply": คำตอบรับตอบกลับเมื่อเราสั่ง Command ต่าง ๆ
    • "system": ข้อความจากระบบ เช่น "connected", "blocked"
  • data: เนื้อหา Payload ดิบทั่วไปที่คุณออกแบบโครงสร้างข้างในได้ตามอิสระ

ในบทถัดไป เราจะเจาะลึกคำสั่ง cmd ทุกตัวที่คุณสามารถยิงหา Server ได้

Released under the MIT License.