PubNub, minimum gecikmeyle WebSocket üzerinden mesaj yayınlama ve abone olma için altyapı sağlayan küresel bir gerçek zamanlı mesajlaşma ağıdır. Yüksek yük ve dengesiz bağlantılar altında güvenilir veri teslimatı gerektiren uygulamalar için tasarlanmıştır. Resmi PubNub dokümantasyonuna (2025) göre, platform dünya çapında 70.000'den fazla uygulama için aylık 1 trilyon mesajdan fazlasını işler.
Önemli Noktalar
PubNub, 2010 yılında kurulmuş küresel bir gerçek zamanlı veri ağıdır. Mesajları yayınlama ve abone olma için API sağlar, ayrıca ek hizmetler sunar: geçmiş depolama, varlık yönetimi, sunucusuz işlevler (PubNub Functions) ve veri akışı analitiği.
PubNub'un mimarisi, 15'ten fazla coğrafi bölgede bulunan dağıtılmış varlık noktaları (POP) ağına dayanır. Her nokta, yayıncılar ve aboneler arasında minimum gecikmeyle mesajları yönlendiren önbellekleme brokerları içerir. PubNub tek bir merkezi broker kullanmaz — her bölge bağımsız olarak çalışır ve küresel ağ üzerinden senkronize olur.
Resmi PubNub web sitesine (2025) göre, platform 200'den fazla ülkede 70.000'den fazla uygulamaya hizmet vermektedir. Önemli müşteriler arasında Logitech (IoT cihaz yönetimi), GoPro (gerçek zamanlı video akışı), eBay (açık artırma senkronizasyonu) ve Snapchat (sohbet ve bildirimler) bulunmaktadır.
PubNub üç ilke üzerine inşa edilmiştir: hız (tek bir bölge içinde 95. yüzdelik dilimde 10 ms'nin altında gecikme), güvenilirlik (otomatik yeniden deneme ile at-least-once teslimat garantisi) ve ölçeklenebilirlik (kanal sayısında sınır olmaksızın yatay genişleme). Platform mesajları uzun süreli depolamada saklamaz — geçmiş, ayrı olarak bağlanan Storage & Playback hizmeti aracılığıyla kullanılabilir.
PubNub'un çalışma modeli klasik yayınla-abone ol desenine dayanır. Yayıncı istemci, publish anahtarıyla PubNub REST API üzerinden kanalı belirterek bir mesaj gönderir. PubNub, mesajı etkin WebSocket bağlantıları aracılığıyla o kanalın tüm abonelerine iletir. Aboneler, PubNub SDK'sına kayıtlı bir geri çağırma işleyicisi aracılığıyla mesajı alır.
PubNub'un taşıma katmanı, birincil protokol olarak WebSocket kullanır ve kısıtlamalı ortamlar için HTTP long-polling'e geri döner. SDK bağlantıyı otomatik olarak yönetir: kurar, heartbeat'i sürdürür (ağa bağlı olarak her 15-60 saniyede bir) ve kesinti durumunda yeniden bağlanır.
PubNub'daki her mesaj meta veri içerir: gönderen UUID'si, zaman damgası, sıra numarası (timetoken) ve bayraklar (store, replicate, eatAfterRead). Timetoken, bir kanal içindeki mesajların küresel sırasını garanti eden zaman tabanlı benzersiz bir PubNub tanımlayıcısıdır. PubNub dokümantasyonuna (2025) göre, timetoken'ın çözünürlüğü 10 nanosaniyedir.
Bir istemci mesaj yayınladığında, Stream Controller — PubNub'un yönlendirme modülü — aracılığıyla geçer. Stream Controller erişim haklarını (PAM) kontrol eder, dönüştürme kurallarını (PubNub Functions) uygular, hedef bölgeleri belirler ve mesajı tüm abonelere gönderir. Bir abone çevrimdışıysa, mesaj bağlantı kurtarma beklerken 30 saniye (varsayılan) boyunca arabelleğe alınır.
PubNub'un anahtar sistemi erişim haklarını üç seviyeye ayırır: publish anahtarı (yalnızca yayınlama), subscribe anahtarı (yalnızca abonelik) ve secret anahtarı (yönetim). Her uygulama kayıt sırasında üç anahtarlık bir set alır, ancak secret anahtarı asla istemciye iletilmez — yalnızca sunucu tarafında kullanılır.
Publish anahtarı kanallara mesaj göndermek için kullanılır. Subscribe anahtarı kanallara abone olmak ve mesaj almak için kullanılır. Secret anahtarı PubNub Access Manager (PAM) aracılığıyla erişim yönetimi, geçici izleyici tokenları oluşturma ve anahtar yönetimi için kullanılır. Secret anahtarı sunucuda güvende tutulur ve asla istemcilere açıklanmaz.
PubNub birkaç kimlik doğrulama modunu destekler: IP adresine göre (sunucular için), secret anahtarına göre (yönetici işlemleri için), geçici tokenlara göre (istemciler için). Geçici tokenlar PAM aracılığıyla süre sonu, kanal ve izinler (read, write, manage) kısıtlamalarıyla verilir.
PubNub kanalları adlandırılmış mesaj yollarıdır. Bir kanal adı, Latin harflerini, rakamları, tireleri ve alt çizgileri destekleyen en fazla 92 karakterlik bir dizedir. Kanallar ilk yayınlama veya abonelikte dinamik olarak oluşturulur. PubNub, abonelik isteklerinde * karakteri aracılığıyla kanal desenlerini destekler — bu, bir kanal grubuna (örneğin, user-*) abone olmayı sağlar.
Channel Groups, toplu abonelik için kanalları gruplama mekanizmasıdır. 50 ayrı kanala abone olmak yerine, istemci bir gruba abone olur ve gruptaki tüm kanallardan gelen mesajlar otomatik olarak istemciye iletilir. Channel Groups iç içe yerleştirmeyi destekler, ancak derinlik 3 seviyeyi geçmemelidir.
PubNub teknik dokümantasyonuna (2025) göre, kanal başına maksimum abone sayısı 50.000'dir. Daha yüksek yükler için, önekli kanallar kullanmanız ve hedef kitlenizi parçalamanız önerilir (örneğin, chat-room-001, chat-room-002). Channel Groups ayrıca coğrafi veya tematik ilkelere göre de düzenlenebilir.
| Parametre | Maksimum | Not |
|---|---|---|
| Kanal adı uzunluğu | 92 karakter | Latin harfleri, rakamlar, -, _ |
| Kanal başına abone | 50.000 | Daha yüksek — parçala |
| Channel Groups | 2000 grup / anahtar | Grup başına 500 kanala kadar |
| Geçmiş (depolama) | Sınırsız | Depolama hacmine göre ödeme |
PubNub entegrasyonu kayıt, yönetim panelinde bir uygulama oluşturma ve bir anahtar seti almayı gerektirir. PubNub kütüphaneleri JavaScript, Swift, Kotlin, Java, Dart (Flutter), C#, Python, Ruby, Go ve diğer birçok dil için mevcuttur. Tarayıcı ve Node.js için JavaScript'te bir örneğe bakalım.
PubNub dokümantasyonuna (2025) göre, pubnub-js kütüphanesi hem CommonJS hem de ES Module içe aktarmayı destekler. Tarayıcı için, npm yapısının ardından webpack veya Vite aracılığıyla paketleme kullanılması önerilir.
import PubNub from 'pubnub';
const pubnub = new PubNub({
publishKey: 'PUBLISH_KEY',
subscribeKey: 'SUBSCRIBE_KEY',
userId: 'user-100'
});
pubnub.subscribe({
channels: ['chat-general']
});
pubnub.addListener({
message: (event) => {
console.log('Yeni mesaj:', event.message);
},
presence: (event) => {
console.log('Varlık:', event.uuid, event.action);
}
});
pubnub.publish({
channel: 'chat-general',
message: { text: 'Hello everyone!', sender: 'user-100' }
});
pubnub.fetchMessages(
{ channels: ['chat-general'], count: 50 },
(status, response) => {
if (status.error) {
console.error('Geçmiş alınırken hata', status);
return;
}
const messages = response.channels['chat-general'];
messages.forEach((msg) => {
console.log(msg.message, msg.timetoken);
});
}
);
PubNub Functions, PubNub tarafında mesajları işlemek için sunucusuz bir platformdur. Fonksiyonlar JavaScript ile yazılır ve güvenli izole bir ortamda (V8 isolate) yürütülür. Abonelere teslim edilmeden önce mesajları dönüştürebilir, filtreleyebilir, arabelleğe alabilir ve yönlendirebilir.
Stream Controller, kurallara dayalı olarak mesaj akışını yöneten yerleşik bir yönlendirme mekanizmasıdır. Kurallar, hangi mesajların teslim edileceğini, hangilerinin atılacağını ve hangilerinin işlenmek üzere PubNub Functions'a gönderileceğini belirler. Stream Controller, mesaj içeriğine, kanal türüne veya meta verilere göre koşullu yönlendirmeyi destekler.
PubNub bloguna (2024) göre, PubNub Functions, filtreleme ve dönüştürme mantığını kendi sunucunuz yerine PubNub uç düğümlerinde çalıştırarak mesaj işleme için sunucu altyapı maliyetlerini %40-60 oranında azaltır. Fonksiyonlar HTTP isteklerine, Key-Value depolamaya ve aynı alandaki diğer fonksiyonlara erişebilir.
Mobil platformlar için PubNub SDK, iOS (Swift), Android (Kotlin/Java), Flutter (Dart) ve React Native (JavaScript) için mevcuttur. Mobil SDK'lar tüm özellik yelpazesini destekler: pub/sub, varlık, geçmiş, PAM ve PubNub Functions. Push bildirimleri için PubNub, özel bir mobil push ağ geçidi mekanizması aracılığıyla APNs ve FCM ile entegre olur.
Mobil cihazlar için optimizasyon, uyarlanabilir heartbeat, toplu mesaj işleme ve arka plan modları desteğini içerir. iOS için PubNub SDK, uygulama simge durumuna küçültüldüğünde bağlantıyı sürdürmek için Background Task API'sini kullanır (standart arka plan süresinin 30 saniyesine kadar). Daha uzun arka plan çalışması için push bildirimleri gerekir.
Mobile Push Gateway, PubNub aracılığıyla push bildirimleri gönderme mekanizmasıdır. Bir kanala mesaj yayınlandığında, PubNub otomatik olarak hangi abonelerin çevrimdışı olduğunu belirler ve onlara APNs (iOS) veya FCM (Android) aracılığıyla bir push bildirimi gönderir. Yapılandırma yönetim panelinde bir kez yapılır — bundan sonra kanaldaki tüm mesajlar otomatik olarak push kanalına kopyalanır. PubNub dokümantasyonuna (2025) göre, ağ geçidi saniyede 10.000'e kadar push bildirimi işler.
Sıkça Sorulan Sorular
PubNub, daha fazla SDK (75'ten fazla platform), yerleşik sunucusuz işlevler ve mesaj işleme için Stream Controller sunar. Pusher kurulumu daha kolaydır, ancak PubNub yönlendirme ve veri dönüştürme üzerinde daha fazla kontrol sağlar.
PubNub, hata durumunda otomatik yeniden deneme ile at-least-once mekanizması kullanır. Her mesajın yinelenenleri kaldırmak için benzersiz bir timetoken'ı vardır. Çevrimdışı aboneler için mesajlar 30 saniye boyunca arabelleğe alınır.
Ücretsiz plan, 100 eşzamanlı bağlantı ve ayda 1 milyon mesaj içerir. Ücretli planlar, sınırsız mesajla 1.000 eşzamanlı bağlantı için aylık $49'dan başlar.
Evet, PubNub tüm bağlantılar için TLS 1.3'ü ve PAM aracılığıyla anahtar yönetimi ile isteğe bağlı uçtan uca istemci tarafı şifrelemeyi (AES-256) destekler. Kurumsal müşteriler için Cipher Key modu mevcuttur.
PubNub, JavaScript, Swift, Kotlin, Java, Dart, C#, Python, Ruby, Go, C++, PHP, Rust ve Objective-C dahil olmak üzere 75'ten fazla platform için SDK sağlar. Bu, gerçek zamanlı hizmetler arasındaki en büyük ekosistemdir.
Ö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