Pusher: çift yönlü gerçek zamanlı iletişim için barındırılan hizmet, kanallar, olaylar ve webhook bildirimleri için altyapı sağlar. Geliştiriciyi kendi WebSocket sunucusunu dağıtma ihtiyacından kurtarır ve milyonlarca cihaza mesaj teslimatı sağlar. Resmi Pusher dokümantasyonuna (2025) göre, hizmet dünya çapında aylık 40 milyardan fazla mesaj işlemektedir.
Önemli Noktalar
Pusher, 2011 yılında kurulmuş çift yönlü gerçek zamanlı iletişim için bir bulut hizmetidir. Kendi WebSocket sunucunuzu yönetmek zorunda kalmadan gerçek zamanlı olarak mesaj göndermek ve almak için hazır altyapı sağlar. Pusher, sohbetler, canlı bildirimler, ortak düzenleme ve oyun liderlik tabloları oluşturmak için kullanılır.
Kendi sunucunuzu dağıtmayı ve bakımını gerektiren Socket.IO gibi kütüphanelerin aksine Pusher, SaaS (Hizmet Olarak Yazılım) modeliyle çalışır. Geliştirici kaydolur, anahtarları (app_id, key, secret) alır ve olayları yayınlamak için Pusher REST API'sini kullanır. Sunucu altyapısı tamamen Pusher platformu tarafından yönetilir.
Resmi Pusher bloguna (2025) göre, platform dünya çapında 250.000'den fazla aktif projeye hizmet vermektedir. Bilinen müşteriler arasında GitHub (gerçek zamanlı bildirimler), Trello (pano senkronizasyonu) ve Intercom (destek sohbeti) bulunmaktadır. Pusher, gecikmeyi en aza indirmek için ABD, Avrupa ve Asya'da veri merkezlerini destekler.
Pusher, 2011 yılında WebSocket için ilk barındırılan hizmetlerden biri olarak başlatıldı. 2014 yılında şirket, private ve presence kanallarını destekleyen mevcut mimari Pusher Channels'ı tanıttı. 2017'de sunucu tarafı olaylar için webhook desteği eklendi. 2022'de Pusher, mobil platformlar için push bildirim hizmeti Pusher Beams'i başlattı.
Pusher mimarisi, kendi kendine barındırılan çözümlerden farklıdır çünkü tüm abonelik işleme, bağlantı yönetimi ve olay yönlendirme Pusher Cloud tarafında gerçekleşir. Geliştirici yalnızca backend'i aracılığıyla private kanalların kimlik doğrulamasını yönetir.
Pusher mimarisi, Yayıncı-Abone modeline dayanır. Sunucu uygulamaları Pusher REST API'si aracılığıyla olayları yayınlar ve istemci uygulamaları bunları kalıcı bir WebSocket bağlantısı üzerinden alır. Pusher, yayıncılar ve aboneler arasında aracı görevi görür.
Sunucu, Pusher API'sine bir POST isteğiyle bir olay gönderdiğinde, platform hedef kanalı belirler ve mesajı o kanala abone olan tüm istemcilere dağıtır. İstemciler, olayı zaten açık olan bir WebSocket bağlantısı üzerinden alır ve coğrafi konuma bağlı olarak 50–100 ms gecikme sağlar.
Her istemci, Pusher Client SDK aracılığıyla bir bağlantı kurar ve SDK otomatik olarak taşımayı seçer (WebSocket — öncelik, HTTP long-polling — geri dönüş). SDK, geliştirici müdahalesi olmadan yeniden bağlanma, veri serileştirme ve hata yönetimini yönetir. Pusher teknik dokümantasyonuna (2025) göre, ağ kesintisinden sonra yeniden bağlanma süresi 1 saniyeden azdır.
Sistem üç bileşenden oluşur: Pusher Server API (olayları yayınlamak için REST uç noktaları), Pusher Client SDK (olaylara abone olmak için kütüphaneler) ve Pusher WebHook (bağlantı/bağlantı kesme olayları hakkında sunucu bildirimleri). Tüm bileşenler eşzamansız ve bağımsız çalışır.
Pusher Channels, her biri farklı kullanım durumları için tasarlanmış üç tür kanalı destekler. Kanal türü, erişim seviyesini, kimlik doğrulama mekanizmasını ve mevcut yetenekleri belirler.
| Kanal türü | Ön ek | Kimlik doğrulama | Kullanım |
|---|---|---|---|
| Public | channel- | Gerekmez | Herkese açık veriler: döviz kurları, hava durumu, haber akışı |
| Private | private- | Sunucuda istek imzası | Kişisel bildirimler, sohbetler, kullanıcı verileri |
| Presence | presence- | İmza + kullanıcı bilgileri | Çevrimiçi durum, oyun odaları, ortak düzenleme |
Public kanallar kimlik doğrulaması olmadan tüm istemciler tarafından kullanılabilir ve yayın verileri için uygundur. Private kanallar, geliştiricinin sunucusu aracılığıyla kimlik doğrulaması gerektirir: istemci, socket_id ve channel_name ile backend'ine bir istek gönderir, sunucu isteği Pusher gizli anahtarıyla imzalar ve bir kimlik doğrulama token'ı döndürür. Presence kanallar ek olarak kullanıcı bilgilerini (user_id, user_info) iletir ve kimin çevrimiçi olduğunu izlemeye olanak tanır.
Pusher dokümantasyonuna (2025) göre, public ve private kanallar için kanal başına maksimum eşzamanlı bağlı istemci sayısı 10.000'dir. Presence kanalları için sınır, kanal başına 10.000 kullanıcı ve uygulama başına 100.000 kullanıcıya kadar destektir.
Pusher olay modeli, bir kanalda yayınlanan adlandırılmış olaylara dayanır. Her olayın bir adı (maksimum 200 karakter), JSON biçiminde verileri ve olayı başlatan kişiye yinelenen gönderimi önlemek için isteğe bağlı bir socket_id'si vardır.
Tetikleyiciler, bir kanalda bir olayı yayınlayan Pusher API'sine yapılan HTTP POST istekleridir. İstek biçimi: channel, name ve data içeren bir gövdeyle POST /apps/{app_id}/events. Pusher Server API, resmi kütüphaneler (PHP, Ruby, Python, Go, Java, Node.js) aracılığıyla herhangi bir sunucu ortamından tetikleyicileri destekler.
Pusher, toplu tetikleyicileri destekler — tek bir istekle birden çok kanala bir olay yayınlama. Bu, sıralı çağrılardan daha verimlidir ve atomik teslimatı garanti eder. Pusher performans testlerine (2024) göre, 100 kanala toplu tetikleyici 30–50 ms sürerken, sıralı çağrılar 2–5 saniye sürer.
Pusher WebHook, sunucunuzun altyapı olayları (istemci bağlantısı, bağlantı kesme, hata oluşumu) hakkında bildirim almasını sağlar. Webhook istekleri, doğrulama için HMAC-SHA256 ile imzalanır. Bu, günlük kaydı, analitik ve durum senkronizasyonu için kritiktir.
Pusher entegrasyonu iki bölümden oluşur: sunucu tarafı (olayları yayınlama) ve istemci tarafı (olaylara abone olma). Sunucu kısmı için Node.js ve istemci kısmı için JavaScript kullanan bir örneğe bakalım. Öncelikle, Pusher panosunda bir uygulama oluşturmanız ve kimlik bilgileri almanız gerekir.
Pusher dokümantasyonuna (2025) göre, temel plan (Sandbox) 100 eşzamanlı bağlantı ve günde 200.000 mesaj içerir — geliştirme ve test için yeterlidir. Üretim planları, 1000 bağlantı için aylık 49$'dan başlar.
const Pusher = require('pusher');
const pusher = new Pusher({
appId: 'YOUR_APP_ID',
key: 'YOUR_KEY',
secret: 'YOUR_SECRET',
cluster: 'eu',
useTLS: true
});
pusher.trigger('my-channel', 'my-event', {
message: 'Hello from server',
timestamp: Date.now()
}).then(() => {
console.log('Olay yayınlandı');
}).catch(console.error);
import Pusher from 'pusher-js';
const pusher = new Pusher('YOUR_KEY', {
cluster: 'eu',
forceTLS: true
});
const channel = pusher.subscribe('my-channel');
channel.bind('my-event', (data) => {
console.log('Olay alındı:', data);
displayNotification(data.message);
});
Pusher, iOS (Swift) ve Android (Java/Kotlin) için SDK'lar sağlar ve bunlar JavaScript istemcisinin işlevselliğini tamamen kopyalar. Mobil SDK'lar aynı kanal türlerini, kimlik doğrulama mekanizmasını ve olay modelini destekler. React Native için, JavaScript köprüsü aracılığıyla çalışan pusher-js paketi mevcuttur.
Mobil cihazlarda, Pusher SDK, üstel geri alma ile yeniden bağlanma mekanizması kullanarak Wi-Fi ve mobil ağlar arasında geçişi otomatik olarak yönetir. Bu, iOS'un arka planda çalışma sırasında WebSocket bağlantılarını zorla kapatabildiği iOS uygulamaları için özellikle önemlidir.
Pusher teknik bloguna (2024) göre, aktif olay olmadığında bir Pusher bağlantısının ortalama trafik tüketimi dakikada 1–2 KB'dir. Bu, 30 saniyelik aralıklarla optimize edilmiş bir kalp atışı protokolü ile elde edilir. Orta büyüklükteki bir uygulama, pil ömrünü önemli ölçüde etkilemeden 1000'e kadar eşzamanlı Pusher bağlantısını destekleyebilir.
Pusher Beams, APNs (iOS) ve FCM (Android) aracılığıyla mobil cihazlara push bildirimleri göndermek için ek bir hizmettir. Beams, Pusher Channels ile entegre olur: bir kanaldaki olay, istemci çevrimdışıysa otomatik olarak bir push bildirimi tetikleyebilir. Bu, uygulama kapalıyken mesaj teslimatı sorununu çözer.
Pusher güvenliği birkaç düzeyde uygulanır. Pusher API'sine yapılan her istek, app_secret kullanılarak HMAC-SHA256 ile imzalanır. Bu, yalnızca yetkili bir sunucunun olayları yayınlayabilmesini sağlar. İstemci SDK'ları, uygulama tanımlaması için app_key kullanır, ancak private ve presence kanallarına erişmek için ek kimlik doğrulama gerekir.
Private kanal kimlik doğrulaması üç adımda gerçekleşir: istemci pusher.subscribe('private-channel') çağırır, Pusher Client SDK backend uç noktanıza (/pusher/auth) bir HTTP isteği gönderir, sunucu kullanıcının izinlerini kontrol eder ve gizli anahtarla imzalanmış bir kimlik doğrulama token'ı döndürür. Pusher imzayı doğrular ve aboneliğe izin verir.
Tüm istekler için TLS bağlantıları kullanılması önerilir (SDK'da useTLS: true ayarı). Pusher ayrıca REST API'sine yapılan sunucu istekleri için IP adresi erişim kısıtlamalarını da destekler. Kurumsal planlar için VPC (Sanal Özel Bulut) ve izole altyapılı özel kümeler desteği mevcuttur.
Sıkça sorulan sorular
Pusher, sunucu yönetimi gerektirmeyen barındırılan bir hizmettir (SaaS). Socket.IO, kendiniz dağıtmanız gereken bir kütüphanedir. Pusher'ın kurulumu daha kolaydır ancak ölçeklenirken daha pahalıdır, Socket.IO DevOps çalışması gerektirir ancak büyük hacimde daha ucuzdur.
Ücretsiz Sandbox planı 100 bağlantı ve günde 200.000 mesaj içerir. Üretim planları, aylık 49$'dan (1000 bağlantı, sınırsız mesaj) özel koşullarla kurumsala kadar başlar.
Pusher, HTTP long-polling'e otomatik geri dönüşle WebSocket kullanır. Kritik mesajlar için, Pusher tarafında en az bir kez (at-least-once) teslimat garantisi ile bir kuyruk mevcuttur.
Evet, Pusher'a Rusya'dan Avrupa kümesi (eu) aracılığıyla erişilebilir. Avrupa veri merkezleri için gecikme 50–100 ms'dir. Veri yerelleştirme gereksinimleri olan projeler için alternatiflerin değerlendirilmesi önerilir.
Ana rakipler Ably (benzer işlevsellik, daha esnek fiyatlandırma), PubNub (küresel teslimat ağı), Socket.IO (kendi kendine barındırılan) ve Firebase Realtime Database (Google ekosistemi)'dir.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun