𝗦𝗵𝗼𝗿𝘁 𝗣𝗼𝗹𝗹𝗶𝗻𝗴, 𝗟𝗼𝗻𝗴 𝗣𝗼𝗹𝗹𝗶𝗻𝗴, 𝗔𝗻𝗱 𝗦𝗦𝗘

คุณจำเป็นต้องส่งข้อมูลจากเซิร์ฟเวอร์ไปยังไคลเอนต์ นี่คือ 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