𝗦𝗵𝗼𝗿𝘁 𝗣𝗼𝗹𝗹𝗶𝗻𝗴, 𝗟𝗼𝗻𝗴 𝗣𝗼𝗹𝗹𝗶𝗻𝗴, 𝗔𝗻𝗱 𝗦𝗦𝗘
คุณจำเป็นต้องส่งข้อมูลจากเซิร์ฟเวอร์ไปยังไคลเอนต์ นี่คือ 3 วิธีในการทำเช่นนั้น
Short Polling
ลองนึกถึงลูกค้าในร้านอาหาร ลูกค้าถามพนักงานเสิร์ฟทุกๆ 5 วินาทีว่าอาหารเสร็จหรือยัง
ลูกค้าจะถามคำถามเดิมซ้ำๆ เป็นระยะๆ อย่างสม่ำเสมอ
ปัญหาที่พบ:
- มีคำขอ (requests) จำนวนมากส่งไปยังเซิร์ฟเวอร์ของคุณ
- การอัปเดตเกิดความล่าช้า หากอาหารเสร็จหลังจากถามไปแล้ว 1 วินาที ลูกค้าจะต้องรออีก 4 วินาทีกว่าจะได้ถามอีกครั้ง
- สิ้นเปลืองทรัพยากรเครือข่าย
Long Polling
ลูกค้าบอกพนักงานเสิร์ฟว่า: "บอกฉันด้วยนะเมื่ออาหารเสร็จแล้ว"
พนักงานเสิร์ฟจะยืนรออยู่ที่โต๊ะ หากเชฟทำอาหารเสร็จ พนักงานจะรีบบอกลูกค้าทันที หากอาหารใช้เวลานานเกินไป พนักงานจะบอกลูกค้าว่าอาหารยังไม่เสร็จ
ปัญหาที่พบ:
- การเชื่อมต่อ (connections) ถูกเปิดค้างไว้เป็นเวลานาน
- อาจเกิดปัญหาการหมดเวลาการเชื่อมต่อ (connection timeouts)
- ยากต่อการจัดการลูกค้าจำนวนมากพร้อมๆ กัน
Server Sent Events (SSE)
ลองนึกถึงราคาหุ้นแบบเรียลไทม์ ไคลเอนต์จะเปิดการเชื่อมต่อเพียงครั้งเดียว และเซิร์ฟเวอร์จะรักษาการเชื่อมต่อนี้ไว้ เมื่อใดก็ตามที่ราคาเปลี่ยน เซิร์ฟเวอร์จะส่งข้อมูลอัปเดตไปยังไคลเอนต์ทันที
ข้อเท็จจริงสำคัญ:
- นี่คือการสื่อสารแบบทางเดียว (one-way communication)
- ข้อมูลไหลจากเซิร์ฟเวอร์ไปยังไคลเอนต์เท่านั้น
- ไคลเอนต์จะไม่ส่งข้อความกลับผ่านการเชื่อมต่อนี้
ที่มา: https://dev.to/guruharish_b/short-polling-long-polling-and-sse-20o5