คำศัพท์สำคัญ (Key Concepts)
ก่อนเริ่มต้นใช้งาน RawPush ควรทำความเข้าใจคำศัพท์หลัก 3 คำที่จะถูกใช้งานบ่อยที่สุดในระบบ
1. Project
Project คือพื้นที่ทำงานแยกอิสระออกจากกัน ข้อมูลระหว่างโปรเจกต์จะไม่มีทางรั่วไหลข้ามกันได้
- 1 บัญชีผู้ใช้ สามารถมีได้หลาย Project (ขึ้นอยู่กับ Plan)
- แต่ละ Project จะมี API Keys และ Dashboard สถิติ (Metrics / Error logs) เป็นของตัวเอง
- การใช้งานจริง: แนะนำให้สร้าง 1 Project สำหรับ 1 แอปพลิเคชัน หรือแบ่งตาม Environment เช่น
MyApp-DevและMyApp-Prod
2. API Keys
กุญแจสำหรับเชื่อมต่อและใช้งานระบบ RawPush โดยจะแบ่งเป็น 2 ส่วนที่แยกหน้าที่กันอย่างชัดเจน:
- Public Key (
pk_xxx): ใช้ให้ Client (เช่น Browser, Mobile app) นำไปต่อท้าย URL ตอนพยายามต่อ WebSocket (wss://..?app_key=pk_xxx)- ⚠️ ห้ามใช้คีย์นี้ในการยืนยันสิทธิ์ลึกๆ เป็นแค่ด่านแรกเท่านั้น
- Secret Key (
sk_xxx): กุญแจลับสุดยอด ใช้สำหรับ Backend (Server-side) ของคุณเท่านั้น มีหน้าที่เซ็นลายเซ็น HMAC-SHA256 และยิง REST API- ⛔️ ห้าม นำ Secret Key ไปฝังไว้ในหน้า Frontend เด็ดขาด หากหลุด ต้องรีบไปกด Revoke เปลี่ยนคีย์ใหม่ทันทีใน Dashboard
3. Channel & Event
สถาปัตยกรรมของ RawPush จะใช้ระบบ "ห้อง" (Channel) และ "ประเภทการกระทำ" (Event)
- Channel: เปรียบเสมือน "คลื่นความถี่" หรือ "ช่องทางจำเพาะ" ที่ Client ต้องการเกาะติดเพื่อรอรับข้อมูล (Subscribe)
- ตัวอย่าง:
updates:feed_1,notifications:user_123,metrics:dashboard
- ตัวอย่าง:
- Event: เปรียบเสมือน "ประเภทการกระทำ" ที่พ่วงมากับก้อนข้อมูลเวลาถูกส่งเข้ามาใน Channel
- ตัวอย่าง:
data.updated,price.changed,status_changed,job.completed
- ตัวอย่าง:
ประเภทของ Channel
| ประเภท | Prefix | ต้อง Auth เพิ่ม? | คำอธิบาย |
|---|---|---|---|
| Public | ไม่มี (ชื่ออะไรก็ได้) | ❌ ไม่ต้อง | Subscribe ได้ทันที เหมาะสำหรับข้อมูลสาธารณะ |
| Private | private: | ✅ ต้องแนบ auth.sig | ต้องใช้ลายเซ็น HMAC จาก Backend (Dynamic ได้ ไม่ต้องลงทะเบียน) |
💡 กฎเหล็ก: Client ต้อง Subscribe เข้า channel ก่อนเสมอ ถึงจะ Publish ข้อมูลเข้า channel นั้นได้
เทียบการทำงาน:
"มีข้อมูลส่งเข้ามา (Event:
price_update) ไปที่ channelticker:btc_usdโดยมีข้อมูลคือ (Data:{'price': 68500.25})"
4. Webhook
Webhook คือระบบที่ RawPush จะ notify กลับไปหา Backend ของคุณ เมื่อมี Event บางอย่างเกิดขึ้น
- แทนที่ Server ของคุณจะต้อง poll ข้อมูลจากเราตลอดเวลา RawPush จะส่ง HTTP POST ไปหา API endpoint ของคุณแบบ real-time
- รองรับ 12 event types: connection lifecycle (
connection.opened,connection.closed,connection.authenticated,connection.auth_failed), channel lifecycle (channel.subscribed,channel.unsubscribed,channel.occupied,channel.vacated), messages (message.published,message.rejected,client_event) และ system (webhook.test)
