ผู้ใช้ไม่เห็นข้อความแบบเรียลไทม์ การแจ้งเตือนมาช้า และแชทออนไลน์ช้าหรือไม่ REST ไม่เหมาะสำหรับสิ่งนี้ — จำเป็นต้องใช้ WebSocket หรือ SSE ช่องทางการสื่อสารสองทาง การส่งทันที การปรับขนาดผ่าน Redis Pub/Sub ทำงานในที่ที่ REST ทำไม่ได้
การพัฒนา real-time API — การสร้างระบบที่ข้อมูลถูกส่งถึงทันที แชท การแจ้งเตือน การแก้ไขร่วมกัน ราคาหุ้น เกมออนไลน์ — ทุกสถานการณ์ที่ความเร็วในการส่งข้อความสำคัญ
WebSocket — ช่องทางการสื่อสารสองทางแบบเต็มรูปแบบบน TCP หน่วงเวลาน้อยที่สุด การเชื่อมต่อถาวรโดยไม่ต้องตั้งค่าใหม่
Server-Sent Events (SSE) — โปรโตคอลน้ำหนักเบาสำหรับการส่งเหตุการณ์ทางเดียวจากเซิร์ฟเวอร์ไปยังเบราว์เซอร์ สำหรับการแจ้งเตือนและฟีดอัปเดต
การปรับขนาด — WebSocket ผ่าน Redis Pub/Sub หรือ RabbitMQ สำหรับการปรับขนาดแนวนอน การเชื่อมต่อพร้อมกันหลายพันรายการบนโหนดเดียว
ความปลอดภัย — WSS (WebSocket Secure), การยืนยันตัวตนเมื่อสร้างการเชื่อมต่อ, การตรวจสอบความถูกต้องของข้อความขาเข้า
WebSocket · SSE · Pub/Sub · Redis · WSS
Real-time ครอบคลุมงานที่หลากหลาย ตั้งแต่การแจ้งเตือนง่ายๆ ไปจนถึงการทำงานร่วมกันของผู้ใช้หลายคน เลือกโปรโตคอลตามสถานการณ์เฉพาะ
WebSocket สำหรับการส่งข้อความทันที รองรับสถานะ: ออนไลน์ ออฟไลน์ กำลังพิมพ์ ประวัติข้อความ ไฟล์ ปฏิกิริยา แชทกลุ่มและส่วนตัว
SSE สำหรับการส่งเหตุการณ์น้ำหนักเบาไปยังเบราว์เซอร์ Push การแจ้งเตือนผ่าน WebSocket กรองตามประเภท ลำดับความสำคัญ ผู้ใช้ การส่งที่รับประกัน
Operational Transform สำหรับการแก้ไขร่วมกัน WebSocket สำหรับการซิงค์เคอร์เซอร์ อัลกอริทึม OT หรือ CRDT สำหรับการแก้ไขความขัดแย้ง
Real-time — เมื่อผู้ใช้ได้รับข้อความเร็วกว่าที่จะคิดได้ว่า "ทำไมเงียบ" เราสร้างระบบที่หน่วงเวลาวัดเป็นมิลลิวินาที ไม่ใช่วินาที
ระบบ Real-time ไม่ใช่แค่ WebSocket เราออกแบบสถาปัตยกรรมที่รองรับการเชื่อมต่อพร้อมกันหลายพันรายการและรับประกันการส่งทุกข้อความ
สถาปัตยกรรมการเชื่อมต่อ — WebSocket vs SSE vs long-polling เลือกโปรโตคอลตามงาน ออกแบบห้องและช่องทางสำหรับการกระจายกลุ่ม
การปรับขนาด — Redis Pub/Sub สำหรับการแลกเปลี่ยนข้อความระหว่างโหนด การปรับขนาดแนวนอนของเซิร์ฟเวอร์ WebSocket ด้วยสถานะร่วม
Real-time บน Node.js — เซิร์ฟเวอร์ WebSocket บน Node.js ด้วย Socket.IO หรือ ws การรวมกับ REST API และแบ็กเอนด์ที่มีอยู่
การรับประกันการส่ง — at-most-once, at-least-once, exactly-once การยืนยันการรับ การส่งซ้ำเมื่อเชื่อมต่อขาด
การตรวจสอบ — จำนวนการเชื่อมต่อที่ใช้งาน แบนด์วิดท์ หน่วงเวลา Prometheus + Grafana สำหรับเมตริกแบบเรียลไทม์
ไฮบริด REST + WebSocket — REST สำหรับคำขอ-ตอบกลับ และ WebSocket สำหรับ push การแจ้งเตือน สถาปัตยกรรมที่เหมาะสมที่สุดสำหรับแอปพลิเคชันสมัยใหม่
Redis Pub/Sub ช่วยให้ปรับขนาดเซิร์ฟเวอร์ WebSocket ในแนวนอนได้ ข้อความที่ส่งบนโหนดหนึ่งจะถูกส่งผ่าน Redis ไปยังโหนดอื่นๆ ทั้งหมดทันที การเชื่อมต่อหลายพันรายการ — คิวเดียว
สั่งซื้อ real-time API — รับระบบ ที่ข้อมูลถูกส่งถึงทันที การเชื่อมต่อเชื่อถือได้ และการปรับขนาดถูกฝังอยู่ในสถาปัตยกรรม
เราใช้ความหมาย at-least-once และ exactly-once ข้อความจะถึงแม้เชื่อมต่อขาดชั่วคราว — คิวยืนยันและกลไกการลองใหม่
Redis Pub/Sub, การปรับขนาดแนวนอนของเซิร์ฟเวอร์ WebSocket การเชื่อมต่อพร้อมกันหลายพันรายการต่ออินสแตนซ์ หลายล้านบนคลัสเตอร์
แดชบอร์ด Grafana: การเชื่อมต่อที่ใช้งาน แบนด์วิดท์ หน่วงเวลา การแจ้งเตือนใน Telegram เมื่อคุณภาพการเชื่อมต่อลดลง
Real-time — เมื่อผู้ใช้ไม่ต้องรอ เราสร้างระบบที่หน่วงเวลาวัดเป็นมิลลิวินาที และการส่งข้อความรับประกันแม้เมื่อเชื่อมต่อขาด