- Kolay, hızlı, kararlı, pil açısından verimli ve açık bir çözüm
- Web tarayıcılarına ve diğer HTTP istemcilerine veri güncellemelerini push eder
- Özellikle web API’leri üzerinden sunulan kaynakların asenkron/gerçek zamanlı güncellemelerini reaktif web ve mobil uygulamalarda göstermek için kullanışlıdır
- Tamamen HTTP tabanlıdır: HTTP/2 ve üzeri protokolleri kullanarak çift yönlü iletişimi destekler
- Hızlı yanıt süresi ve düşük gecikme
- Ek kurulum gerektirmeden her ortamda tarayıcı uyumluluğu sunar
- Basit yayınlama ve abonelik
- Yayınlama (Publish): Basit bir POST isteğiyle gerçekleştirilir
- Abonelik (Subscribe): Server-Sent Events (SSE) üzerinden gerçek zamanlı güncellemeler alınır
- Bağlantı kesildiğinde otomatik yeniden bağlanma ve kaçırılan mesajları yeniden isteme desteği
- RESTful API ve GraphQL için tasarlanmıştır
- JWT kimlik doğrulamasıyla özel güncellemeler sunar
- Kullanıcının bağlantı durumunu kontrol edebilen Presence API sunar. Abonelik ve olay durumları izlenebilir
- Olay deposu: oluşan olaylar saklanıp yönetilebilir
- PHP ve diğer sunucusuz mimarilerle uyumludur
- Verilerin tam güvenliği için E2EE (End-to-End Encryption) sunar
- Prodüksiyonda kullanılabilecek düzeyde Mercure Hub referans implementasyonu sunar
- Tüm Go uygulamalarında hub olmadan doğrudan Mercure protokolünü uygulamak için kullanılabilecek bir kütüphane ve resmî Docker imajı da sağlanır
2 yorum
SSE tabanlıysa bunun tek yönlü iletişim mi yoksa WebSocket gibi çift yönlü iletişimi de destekleyip desteklemediğini merak ediyorum! 😮
Şimdilik kendi araştırdığıma göre yalnızca tek yönlü iletişimi (sunucu->istemci) destekliyor gibi görünüyor... 🥺
https://medium.com/@sirajul.anik/…
Aynı kişinin yaptığı FrankenPHP içinde Mercure implementasyonu yerleşik olarak geliyor.
https://tr.news.hada.io/topic?id=15103
Gerçek zamanlı bir hub sunması açısından alternatif olabilecek Pushpin de var.
https://tr.news.hada.io/topic?id=11377
Pushpin bana Mercure'den daha sezgisel geldiği için (haha... Mercure dokümantasyonunu okumaya üşenmiştim) daha önce bir yan projede Pushpin kullanmıştım, ama bir sonrakinde bunu denemek istiyorum.