System Track
Network
Common Protocols
WebSocket
เข้าใจ WebSocket สำหรับผู้เริ่มต้น: การเชื่อมต่อค้างไว้แบบสองทาง (full-duplex), ต่างจาก HTTP อย่างไร และเหมาะกับงานแบบไหน
1. Core Idea: WebSocket คืออะไร
WebSocket คือโปรโตคอลสำหรับสื่อสารแบบสองทาง (full-duplex) บนการเชื่อมต่อเดียวที่ค้างไว้ ต่างจาก HTTP ปกติที่มักเป็นรูปแบบขอ-ตอบจบเป็นครั้ง ๆ
- เปิดการเชื่อมต่อครั้งเดียวแล้วส่งข้อมูลได้ต่อเนื่อง
- Client และ Server ส่งข้อความหากันได้ทั้งสองฝั่ง
- เหมาะกับข้อมูลเรียลไทม์ เช่น chat และ live dashboard
- ลด overhead จากการเปิด request ใหม่บ่อย ๆ
2. Mental Model: โทรศัพท์สายเปิด vs ส่งจดหมายทีละฉบับ
HTTP เปรียบเหมือนส่งจดหมายทีละฉบับ ส่งแล้วรอคำตอบแล้วจบ WebSocket เปรียบเหมือนคุยโทรศัพท์สายเปิด ทั้งสองฝ่ายพูดคุยได้ทันทีโดยไม่ต้องเริ่มใหม่ทุกครั้ง
WebSocket เหมาะกับเหตุการณ์ที่ข้อมูลเปลี่ยนบ่อยและต้องอัปเดตทันที
3. Protocol Breakdown: HTTP vs WebSocket
| หัวข้อ | HTTP | WebSocket |
|---|---|---|
| รูปแบบสื่อสาร | Request-Response | สองทางต่อเนื่อง (Full-duplex) |
| การเชื่อมต่อ | มักเป็นครั้งต่อครั้ง | เปิดค้างไว้หลัง handshake |
| ความเหมาะสม | หน้าเว็บทั่วไป, API ทั่วไป | chat, เกม, live notification |
| ความหน่วง | อาจสูงกว่าในงาน realtime | มักตอบสนองไวกว่าในงาน realtime |
| การออกแบบระบบ | ง่ายและคุ้นเคย | ต้องจัดการ connection state เพิ่ม |
4. Worked Example: ระบบแจ้งเตือนแบบทันที
- 1) ผู้ใช้เปิดหน้า dashboard
- 2) Browser เชื่อมต่อ WebSocket กับเซิร์ฟเวอร์
- 3) เมื่อมี event ใหม่ เซิร์ฟเวอร์ push ข้อความหาผู้ใช้ทันที
- 4) ผู้ใช้เห็นแจ้งเตือนแบบ realtime โดยไม่ต้อง refresh
- 5) เมื่อปิดหน้าเว็บ การเชื่อมต่อถูกปิดและลดภาระระบบ
แนวคิด URLbash
HTTP API: https://api.example.com/notifications
WebSocket: wss://api.example.com/realtime5. Practical Notes: จุดสับสนของมือใหม่
- ไม่ใช่ทุกระบบต้องใช้ WebSocket ถ้าข้อมูลไม่ realtime มาก HTTP ก็พอ
- WebSocket ต้องจัดการการ reconnect เมื่อเน็ตหลุด
- งาน production ควรใช้ wss:// (WebSocket over TLS)
- จำนวน connection พร้อมกันสูงอาจกระทบ resource เซิร์ฟเวอร์ ต้องวางแผนขยายระบบ
6. Recap + เชื่อมบทถัดไป
- WebSocket คือช่องสื่อสารสองทางที่ค้างการเชื่อมต่อไว้
- เด่นมากในงาน realtime ที่ต้องอัปเดตทันที
- HTTP ยังเหมาะกับงานทั่วไปและเรียบง่ายกว่า
- เมื่อเข้าใจโปรโตคอลพื้นฐานแล้ว จะวิเคราะห์สถาปัตยกรรมระบบได้แม่นขึ้น