Skip to content

ข้อจำกัดของระบบ (System Constraints)

การสร้างแอปพลิเคชัน Real-time ขนาดสเกลใหญ่อาจเต็มไปด้วยข้อควรระวัง RawPush มีความตั้งใจช่วยคุณคุมพื้นที่การพัฒนาระบบให้อยู่ในกรอบที่มีประสิทธิภาพ ด้วยตัวเลขข้อจำกัดเหล่านี้


📦 1. ขีดจำกัดทางฝั่ง Payload และ Data

เมื่อคุณต้องการส่งข้อมูลไปกับคำสั่ง Publish (ไม่ว่าจะผ่านช่อง REST API หรือยิงตรงดิบๆ ผ่าน WebSocket Command) ก้อนข้อมูลทั้งหมดต้องอยู่ในปริมาณที่ระบบรับไหว:

  • ขนาดของ Payload (Data Size): น้ำหนักสูงสุดต่อ 1 การ Publish คือ 10 KB.

    ทำไมถึงต้องกำหนด? ถ้าข้อมูล 1 ชิ้นเป็นไฟล์ขนาดใหญ่ พอ broadcast ไปหา User หมื่นคนพร้อมกัน... bandwidth มหาศาลจะทำให้เบราว์เซอร์ปลายทางค้าง (Browser Freeze)... ควรส่งเป็น URL รูปภาพ หรือ ID แทน แล้วให้ Client ไปโหลดไฟล์เต็มเอง

  • ความยาวชื่อ Channel: ไม่เกินจุดปลอดภัยสุดที่ 100 ตัวอักษร.

  • ความยาวของค่า Event: ห้ามยาวเกิน 100 ตัวอักษร.

    ทำไมถึงต้องกำหนด? เพราะถ้า Event ของคุณยาวกว่านี้ มันควรจะถูกจับยัดไปซ่อนอยู่ในก้อน Payload (Data) แทนการเอามาตั้งชื่อ


🔌 2. ขีดจำกัดฝั่ง Connection และ Auth

  1. เวลาให้ Auth (Handshake Timeout):

    • เมื่อ connect WebSocket (ws.onopen) สำเร็จ คุณมีเวลา 10 วินาทีถ้วน ที่จะส่ง JSON ของ Command auth + HMAC signature กลับมา.. ถ้าไม่ส่ง connection จะถูก close ทันที (Error: 4001)
  2. อายุสูงสุดของ Token ตัวยืนยัน (Expiration Limit):

    • ตอนปั่นรหัส jti + exp.. เราไม่รับใบเบิกทางที่ระบุเวลาหมดอายุข้างหน้าเกินกว่า 1 วัน (24 ชั่วโมง)... โดยคำแนะนำหลักให้ตั้งกรอบไว้หลวมๆ ที่ 5-10 นาทีก็เยอะเกินพอ!
  3. Ping / Pong Interval:

    • RawPush จะส่ง Ping ไปหา Client ทุก 30 วินาที (หรือมากกว่า) และ Browser จะตอบ Pong ให้อัตโนมัติ.. ถ้าเน็ตหลุดนานจนระบบไม่ได้รับ Pong กลับ connection จะถูก close

🚦 3. ขีดจำกัดทาง Rate Limit (ความเร็วในการยิง)

ระบบมีการเซนเซอร์การสาดรัวๆ จาก ความเร็วการ Publish ต่อ 1 โปรเจกต์ (Messages_Per_Sec)

  • หากเกิน โควต้าตามที่ Plan ของคุณกำหนด... คำสั่ง Broadcast อันล้นขอบของคุณ (ไม่ว่าจะมาทางฝั่ง API Server หรือ WebSocket ยิงเอง) จะถูกดีดกลับ
  • แจ้งสถานะ 429 Too Many Requests ถี่ๆ ลงหน้า Error Log ของโปรเจกต์คุณ

(วิธีเพิ่มโควต้านี้ สามารถเจรจาปรับปรุง Scale แผนการใช้งาน ภายใต้หน้าเมนู Usage & Quotas ของ Dashboard ได้เลย!)

Released under the MIT License.