Anlık güncellemeler, sunucularınızdan doğrudan uzantı yüklemelerinize anında iletişim yolu sağlar. Etkinlikler gerçekleşirken veri gönderip alabilirsiniz. Anlık mesajlaşma, arka plan görevlerini tetikleme veya cihaz verilerini senkronize etme gibi işlemler için kullanılsın ya da kullanılmasın, bu işlem birçok modern hizmet için kritik öneme sahiptir. Chrome uzantılarında gerçek zamanlı iletişim kurmak için çeşitli seçenekler vardır.
- Web Push veya Push API, herhangi bir Push sağlayıcıdan ya da kendi web sunucunuzdan Chrome uzantısında mesaj göndermenize ve almanıza olanak tanıyan bir web standardıdır.
- chrome.gcm, Firebase Cloud Messaging'i kullanarak mesaj göndermenize ve almanıza olanak tanıyan, uzantıya özel eski bir API'dir.
- WebSockets, Chrome uzantınız ile sunucunuz arasında çift yönlü bir bağlantı açmanıza olanak tanıyan düşük seviyeli bir protokoldür.
Sık karşılaşılan senaryolar
Chrome uzantılarında anlık iletişimin kritik olduğu bazı yaygın senaryoları aşağıda bulabilirsiniz:
Kullanıcıları değişiklikler konusunda bilgilendirin.
Dosyaları, ayarları veya diğer bilgileri birden fazla kullanıcı arasında senkronize ediyorsanız Web Push, uzantınıza sunucudaki durumu güncellemesi gerektiğini bildirmek için sessiz güncellemeler göndermenin mükemmel bir yoludur.
Kullanıcıların hataları veya sorunları bildirmesine izin veriyor musunuz? Paylaşılacak bir güncellemeniz olduğunda doğrudan uzantınızdan bildirim sağlayıcıya haber vermek için sağlayıcıyla entegrasyon yapabilirsiniz.
Kullanıcılara bildirim gönderme
Bildirimleri tamamen istemci tarafında gönderebilirsiniz ancak bildirimlerin kime, ne zaman, nerede ve ne hakkında gönderileceğine dair sunucu tarafı mantığınız varsa Web Push en uzun süre desteklenecek seçenektir.
Yalnızca bir kullanıcı alt grubuna mesaj göndermek için Push en iyi seçenektir.
Firebase Cloud Messaging, Konular (kanallar olarak da bilinir) sunsa da bu özellik yalnızca HTTP Cloud Messaging API'sinde kullanılabilir. Bu, chrome.gcm tarafından kullanılan eski sürümden farklıdır. Chrome'un eski sürümlerini (Chrome 121 öncesi) kullananlar da dahil olmak üzere tüm kullanıcılara toplu mesaj göndermek istiyorsanız chrome.gcm ideal seçenektir. Eski Firebase mesajlaşma API'leri üzerine kurulu olan chrome.gcm, Chrome'da on yılı aşkın süredir desteklenmektedir.
Hesapları için önemli bir olay gerçekleştiğinde (ör. yeni bir mesaj geldiğinde veya bir dosya paylaşıldığında) kullanıcılara bildirim göndermek için web push bildirimlerini veya chrome.gcm kullanabilirsiniz.
Anlık Mesajlaşma
Sık sık iki yönlü iletişim kurmanız mı gerekiyor? Bu durumda, sizin için en iyi seçenek web soketi olabilir. Uzantınız ile sunucunuz (veya doğrudan diğer kullanıcılar) arasında iki yönlü bir bağlantı açar. Gerçek zamanlı olarak veri ve mesaj alışverişi yapmanıza olanak tanır. Genel olarak web'de harika bir seçenek olsalar da uzantılarla ilgili bazı sınırlamaları vardır. Bu nedenle, kullanmayı planlıyorsanız bu sınırlamaları göz önünde bulundurmanız gerekir.
Bu kılavuzun geri kalanında, mevcut seçenekleri daha yakından inceleyeceğiz.
Push API ile push bildirimleri
Push API'yi kullanarak push bildirimleri ve mesajları göndermek için herhangi bir Push sağlayıcısını kullanabilirsiniz. Push API'den gelen bir anında bildirim, alındığı anda hizmet çalışanınız tarafından işlenir. Uzantı askıya alınmışsa Push ile yeniden etkinleştirilir. Uzantılarda kullanma süreci, açık web'de kullanma süreciyle tamamen aynıdır.
chrome.gcm ile push bildirimleri
chrome.gcm API'si, Firebase Cloud Messaging'e (FCM) doğrudan bağlantı sağlar. FCM, web uygulamalarına ve mobil uygulamalara gerçek zamanlı güncellemeler göndermek için kullanılan bir hizmettir. Bu, Push tarayıcılarda kullanıma sunulmadan çok yıllar önce eklenen Chrome'a özgü bir uzantı API'sidir. Firebase'in (artık kullanımdan kaldırılmış) eski HTTP API'leri kullanılarak oluşturulmuştur. Bu API'ler başka yerlerde kullanımdan kaldırılmış olsa da uzantılarda kullanımdan kaldırılmamıştır. Öngörülebilir gelecekte çalışmaya devam edecekler. Ancak bu eski push arka ucu olduğundan Konular gibi özellikler eksiktir.
FCM arka uç hizmeti, bildirimlerin Chrome'daki kullanıcılara ulaşması için zorunlu olsa da mesaj göndermek için chrome.gcm kullanmanız gerekmez.
Tüm Push sağlayıcılar, web Push'ı kullanarak bir Firebase hesabına mesaj ve etkinlik gönderip alabilir. Bu API, Chrome uzantısı API'si olarak tam desteklenmeye devam etse de bu gibi uzantıya özel API'ler yerine Push API gibi web standartlarını tercih etmek en iyi uygulamadır. Kullanım alanınız için en uygun çözüm chrome.gcm ise chrome.gcm'yi sıfırdan nasıl ayarlayacağınızla ilgili ayrıntılı bir kılavuz bulunmaktadır.
WebSocket'ler ile anlık mesajlar
WebSockets, on yılı aşkın bir süredir web'de anlık mesajlaşmanın temel taşı olmuştur. Web'deki anlık etkinlikler için tercih edilen seçenek olan canlı sohbetler, kesintisiz ve iki yönlü bir iletişim olanağı sunar. WebSocket'ler, çeşitli uzantı bileşenlerinde çalışır. Bunlar içerik komut dosyaları, pop-up'lar, yan paneller veya arka plan hizmeti çalışanları olabilir. Genel olarak web'de harika bir seçenek olsalar da uzantılarla ilgili bazı sınırlamaları vardır. Bu nedenle, kullanmayı planlıyorsanız bunları göz önünde bulundurmanız gerekir.
Push bildirimleri için uygun değil
WebSocket'ler bir uzantı platformu API'si (ör. chrome.gcm) yerine web platformunda çalıştığından, Chrome, uzantınızın dışında bir WebSocket bağlantısı başlatıldığında uzantınızı uyandırmanın bir yolunu sunmaz.
Yalnızca etkin bağlantılar
Chrome, 30 saniye boyunca kullanılmayan uzantıları askıya alır. Chrome, uzantının "kullanılıp kullanılmadığını" belirlemek için bir dizi sezgisel yöntem kullanır. Bunlardan biri etkin bir WebSocket bağlantısıdır. Chrome, son 30 saniye içinde WebSocket mesajı gönderen veya alan uzantıları askıya almaz. Uzantınızda WebSockets kullanıyorsanız ve bağlantının erken kapanmadığından emin olmanız gerekiyorsa bağlantıyı sürdürmek için kalp atışı mesajı gönderebilirsiniz. Bu işlem, sunucuya düzenli olarak mesaj göndermeyi içerir. Böylece hem sunucu hem de Chrome, etkin olduğunuzu bilir. Bir WebSocket'i süresiz olarak etkin tutma örneğini WebSocket belgelerimizde bulabilirsiniz.