- โซลูชันแบบเปิดที่ใช้งานง่าย รวดเร็ว เสถียร และประหยัดแบตเตอรี่
- พุชการอัปเดตข้อมูลไปยังเว็บเบราว์เซอร์และไคลเอนต์ HTTP อื่น ๆ
- มีประโยชน์อย่างยิ่งสำหรับการแสดงผลการอัปเดตแบบอะซิงโครนัส/เรียลไทม์ของรีซอร์สที่ให้บริการผ่านเว็บ API บนเว็บแบบตอบสนองและแอปมือถือ
- ทำงานบน HTTP ล้วน: รองรับการสื่อสารสองทางโดยอาศัยโปรโตคอล HTTP/2 ขึ้นไป
- เวลาตอบสนองรวดเร็วและมีความหน่วงต่ำ
- รองรับเบราว์เซอร์ในทุกสภาพแวดล้อมได้โดยไม่ต้องติดตั้งเพิ่มเติม
- การ publish และ subscribe ที่เรียบง่าย
- Publish: จัดการด้วยคำขอ POST แบบง่าย
- Subscribe: รับการอัปเดตแบบเรียลไทม์ผ่าน Server-Sent-Events (SSE)
- รองรับการเชื่อมต่อใหม่อัตโนมัติเมื่อการเชื่อมต่อหลุด และสามารถร้องขอข้อความที่พลาดไปซ้ำได้
- ออกแบบมาสำหรับ RESTful API และ GraphQL
- รองรับการอัปเดตแบบส่วนตัวผ่านการยืนยันตัวตนด้วย JWT
- มี Presence API สำหรับตรวจสอบสถานะการเชื่อมต่อของผู้ใช้ และติดตามสถานะการ subscribe กับอีเวนต์ได้
- Event store: สามารถจัดเก็บและจัดการอีเวนต์ที่เกิดขึ้นได้
- รองรับ PHP และสถาปัตยกรรม serverless อื่น ๆ
- รองรับ E2EE (End-to-End Encryption) เพื่อความปลอดภัยของข้อมูลอย่างสมบูรณ์
- มี Mercure Hub reference implementation ที่พร้อมใช้งานในระดับ production
- มาพร้อมไลบรารีและอิมเมจ Docker อย่างเป็นทางการ ซึ่งสามารถใช้ให้แอปพลิเคชัน Go ทุกตัวติดตั้งโปรโตคอล Mercure ได้โดยตรงโดยไม่ต้องมีฮับ
2 ความคิดเห็น
ถ้าเป็นแบบอิง SSE ก็สงสัยเหมือนกันว่าเป็นการสื่อสารทางเดียว หรือรองรับการสื่อสารสองทางแบบ WebSocket ด้วยไหม! 😮
เท่าที่ลองหาดูเองเบื้องต้น เหมือนว่าจะรองรับแค่การสื่อสารทางเดียว (เซิร์ฟเวอร์ -> ไคลเอนต์) เท่านั้นนะ... 🥺
https://medium.com/@sirajul.anik/…
FrankenPHP ที่คนเดียวกันเป็นผู้สร้างนั้นมี implementation ของ Mercure ฝังมาให้ในตัว
https://th.news.hada.io/topic?id=15103
ในแง่ของการให้บริการ real-time hub ก็มี Pushpin ที่สามารถเป็นทางเลือกทดแทนได้เช่นกัน
https://th.news.hada.io/topic?id=11377
สำหรับผม Pushpin ดูตรงไปตรงมามากกว่า Mercure (ฮ่าๆ... ขี้เกียจอ่านเอกสารของ Mercure มากเกินไป) ก่อนหน้านี้เลยใช้ Pushpin ทำ side project แต่ครั้งหน้าก็อยากลองใช้ตัวนี้ดูครับ