ว่าด้วยเรื่องการทำ Realtime App
อะไรคือการทำ Realtime App ?
เทคนิคต่างๆในการทำ Realtime App
1. Polling คือการ Send Request และยิงตาม Period ที่ตั้งเอาไว้ เช่น ตั้งค่าในการใช้ Polling ทุกๆ 1 นาที ระบบจะทำการ Send Request ทุก 1 นาที
- Pros: สามารถทำตามได้ง่าย
- Cons: ใช้ทรัพยากรเยอะ เนื่องจากจะมีการยิง Request ตามช่วงเวลาที่กำหนด โดยหากมีผู้ใช้งานเป็นจำนวนมาก จะทำให้ระบบต้องรองรับจำนวน Request มากเกินความจำเป็น
2. Long Polling คล้ายกับการทำงานแบบ Polling ที่กล่าวไปข้างต้น แต่มีการเพิ่มการหน่วงเวลาทางฝั่ง Backend ภายใต้เงื่อนไขที่ว่าต้องมีข้อความใหม่ก่อน จึงจะดำเนินการส่งกลับได้
- Pros: ใช้ทรัพยากรน้อยกว่าแบบ Polling เนื่องจากไม่ต้องยิง Request ตามรอบเวลาที่กำหนด
- Cons: มีความเสี่ยงที่จะทำให้เกิดเชื่อมต่อมีข้อผิดพลาด (Connection Timeout) ได้ง่าย จึงทำให้ข้อมูลหาย เนื่องจากไม่มีการส่งข้อมูลกลับไป
3. Web Sockets จะเป็นการทำงานอยู่บน Socket ที่เป็น Connection แบบ TCP (Transmission Control Protocol) รองรับการทำงานแบบ Bidirectional Communication หรือการสื่อสารแบบสองทิศทาง
- Pros: ทำงานได้เร็วที่สุด เเละ มี Library ที่ครอบคลุมเกือบทุกภาษา
- Cons: ต้อง Handle การทำงานค่อนข้างเยอะ และ อาจมีปัญหาที่ตามมาเยอะเช่นกัน
4. Server-Sent Event (SSE) ทำงานคล้ายๆกับ Web Socket แต่จะเป็นการทำงานแบบ Unidirectional คือการส่งข้อมูลด้านเดียว และได้ Response หรือการส่งกลับตามที่ตั้งค่าไว้ใน Code
- Pros:
- 1.ใช้งานได้ง่าย
- 2.มี Data Efficiency สูง
- 3.ในกรณีที่มีปัญหาไม่สามารถ Connect ได้ สามารถดำเนินการ Reconnect ได้ทันที
- 4.ประหยัด Source กว่า Short และ Long Polling
- 5.เขียนง่ายไม่ต้องใช้ Library
- Cons: ไม่รอบรับการทำงานบน Internet Explorer
การใช้งาน Server-Sent Event กับ Django
ตอน Send Event จะมีการส่งค่า “Type” มาด้วย ดังนั้นหาก Type ไม่ตรงก็จะไม่เข้า Listener
เมื่อเข้า Web Portal และมีการยิง Request จะมาการสร้าง Event ขึ้นมา