Pusher: ikitərəfli real-time rabitə üçün hosted-xidmət, kanallar, hadisələr və webhook bildirişləri üçün infrastruktur təmin edir. O, tərtibatçını öz WebSocket serverini qurmaq zərurətindən azad edir və milyonlarla cihaza mesaj çatdırılmasını təmin edir. Pusher rəsmi sənədlərinə (2025) görə, xidmət aylıq olaraq bütün dünyada 40 milyarddan çox mesaj emal edir.
Əsas məqamlar
Pusher — 2011-ci ildə əsası qoyulmuş ikitərəfli real-time rabitə üçün bulud xidmətidir. O, öz WebSocket serverini idarə etmədən real-time mesajlar göndərmək və qəbul etmək üçün hazır infrastruktur təqdim edir. Pusher söhbətlər, canlı bildirişlər, birgə redaktə və oyun liderlik lövhələri qurmaq üçün istifadə olunur.
Öz serverinin qurulmasını və saxlanmasını tələb edən Socket.IO kimi kitabxanalardan fərqli olaraq, Pusher SaaS (Software as a Service) modeli ilə işləyir. Tərtibatçı qeydiyyatdan keçir, açarlar (app_id, key, secret) alır və hadisələri dərc etmək üçün Pusher REST API-dən istifadə edir. Server infrastrukturu tamamilə Pusher platforması tərəfindən idarə olunur.
Pusher rəsmi bloquna (2025) görə, platforma bütün dünyada 250 000-dən çox aktiv layihəyə xidmət göstərir. Tanınmış müştərilər arasında GitHub (real-time bildirişlər), Trello (panoların sinxronizasiyası) və Intercom (dəstək söhbəti) var. Pusher gecikmələri minimuma endirmək üçün ABŞ, Avropa və Asiyada məlumat mərkəzlərini dəstəkləyir.
Pusher 2011-ci ildə WebSocket üçün ilk hosted-xidmətlərdən biri kimi işə salınıb. 2014-cü ildə şirkət Pusher Channels-ı təqdim etdi — private və presence kanallarını dəstəkləyən cari arxitektura. 2017-ci ildə server tərəfi hadisələri üçün webhook dəstəyi əlavə edildi. 2022-ci ildə Pusher Pusher Beams — mobil platformalar üçün push bildiriş xidmətini işə saldı.
Pusher arxitekturası self-hosted həllərdən onunla fərqlənir ki, abunəliklərin işlənməsi, əlaqələrin idarə edilməsi və hadisələrin marşrutlaşdırılması Pusher Cloud tərəfindən həyata keçirilir. Tərtibatçı yalnız öz backend-i vasitəsilə private kanalların autentifikasiyasını idarə edir.
Pusher arxitekturası Publisher-Subscriber modelinə əsaslanır. Server tətbiqləri Pusher REST API vasitəsilə hadisələri dərc edir, müştəri tətbiqləri isə onları daimi WebSocket əlaqəsi vasitəsilə alır. Pusher nəşr edənlər və abunə olanlar arasında vasitəçi rolunu oynayır.
Server Pusher API-ə POST sorğusu vasitəsilə hadisə göndərdikdə, platforma hədəf kanalı müəyyənləşdirir və mesajı bu kanala abunə olan bütün müştərilərə yayımlayır. Müştərilər hadisəni artıq açılmış WebSocket əlaqəsi vasitəsilə alır, bu da coğrafi yerdən asılı olaraq 50–100 ms gecikmə təmin edir.
Hər bir müştəri Pusher Client SDK vasitəsilə əlaqə qurur, o avtomatik olaraq nəqliyyatı seçir (WebSocket — prioritet, HTTP long-polling — fallback). SDK tərtibatçının iştirakı olmadan yenidən qoşulma, məlumatların seriyalaşdırılması və səhvlərin işlənməsini idarə edir. Pusher texniki sənədlərinə (2025) görə, şəbəkə qopması zamanı yenidən qoşulma müddəti 1 saniyədən azdır.
Sistem üç komponentdən ibarətdir: Pusher Server API (hadisələrin dərci üçün REST son nöqtələri), Pusher Client SDK (hadisələrə abunə olmaq üçün kitabxanalar) və Pusher WebHook (qoşulma/ayrılma hadisələri haqqında server bildirişləri). Bütün komponentlər asinxron və müstəqil işləyir.
Pusher Channels üç növ kanalı dəstəkləyir, hər biri müxtəlif istifadə ssenariləri üçün nəzərdə tutulub. Kanal növünün seçimi giriş səviyyəsini, autentifikasiya mexanizmini və mövcud imkanları müəyyən edir.
| Kanal növü | Prefiks | Autentifikasiya | İstifadə |
|---|---|---|---|
| Public | channel- | Tələb olunmur | İctimai məlumatlar: valyuta məzənnələri, hava, xəbər lenti |
| Private | private- | Serverdə sorğunun imzalanması | Şəxsi bildirişlər, söhbətlər, istifadəçi məlumatları |
| Presence | presence- | İmza + istifadəçi haqqında məlumat | Onlayn status, oyun otaqları, birgə redaktə |
Public kanallar autentifikasiya olmadan bütün müştərilər üçün əlçatandır və yayım məlumatları üçün uyğundur. Private kanallar tərtibatçının serveri vasitəsilə autentifikasiya tələb edir: müştəri öz backend-inə socket_id və channel_name ilə sorğu göndərir, server sorğunu Pusher məxfi açarı ilə imzalayır və auth tokeni qaytarır. Presence kanalları əlavə olaraq istifadəçi haqqında məlumat (user_id, user_info) ötürür və kimin onlayn olduğunu izləməyə imkan verir.
Pusher sənədlərinə (2025) görə, bir kanala eyni anda qoşulmuş müştərilərin maksimum sayı public və private kanallar üçün 10 000-dir. Presence kanalları üçün məhdudiyyət hər kanal üçün 10 000 istifadəçi, tətbiq üzrə 100 000 istifadəçiyə qədər dəstəklənir.
Pusher hadisə modeli kanalda dərc olunan adlandırılmış hadisələrə əsaslanır. Hər bir hadisənin adı (maksimum 200 simvol), JSON formatında məlumatları və hadisə başladıcısına təkrar göndərilməni istisna etmək üçün isteğe bağlı socket_id var.
Triggerlər — bunlar Pusher API-ə kanalda hadisə dərc edən HTTP POST sorğularıdır. Sorğu formatı: POST /apps/{app_id}/events, channel, name və data daxil olmaqla. Pusher Server API rəsmi kitabxanalar (PHP, Ruby, Python, Go, Java, Node.js) vasitəsilə istənilən server mühitindən triggerləri dəstəkləyir.
Pusher batch-triggerləri dəstəkləyir — bir sorğu ilə bir hadisənin bir neçə kanalda dərci. Bu, ardıcıl çağırışlardan daha səmərəlidir və çatdırılmanın atomarlığını təmin edir. Pusher performans testlərinə (2024) görə, 100 kanalda batch-trigger 30–50 ms çəkir, ardıcıl çağırışlar isə 2–5 saniyə çəkir.
Pusher WebHook serverinizə infrastruktur hadisələri haqqında bildirişlər almağa imkan verir: müştəri qoşulması, ayrılması, xətanın baş verməsi. Webhook sorğuları yoxlama üçün HMAC-SHA256 ilə imzalanır. Bu, loglama, analitika və vəziyyət sinxronizasiyası üçün vacibdir.
Pusher inteqrasiyası iki hissədən ibarətdir: server tərəfi (hadisələrin dərci) və müştəri tərəfi (hadisələrə abunə olmaq). Server hissəsi üçün Node.js və müştəri hissəsi üçün JavaScript nümunəsinə baxaq. Başlamaq üçün Pusher panelində tətbiq yaratmaq və etimadnamə əldə etmək lazımdır.
Pusher sənədlərinə (2025) görə, əsas plan (Sandbox) 100 eyni vaxtda qoşulma və gündə 200 000 mesaj daxildir — inkişaf və sınaq üçün kifayətdir. Production planları 1000 qoşulma üçün ayda $49-dan başlayır.
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('Hadisə dərc edildi');
}).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('Alınan hadisə:', data);
displayNotification(data.message);
});
Pusher SDK təqdim edir iOS (Swift) və Android (Java/Kotlin) üçün, JavaScript müştərisinin funksionallığını tamamilə təkrarlayır. Mobil SDK-lar eyni kanal növlərini, autentifikasiya mexanizmini və hadisə modelini dəstəkləyir. React Native üçün JavaScript körpüsü vasitəsilə işləyən pusher-js paketi mövcuddur.
Mobil cihazlarda Pusher SDK eksponensial gecikmə ilə yenidən qoşulma mexanizmindən istifadə edərək Wi-Fi və mobil şəbəkə arasında keçidi avtomatik idarə edir. Bu, xüsusilə iOS tətbiqləri üçün vacibdir, çünki iOS fon işi zamanı WebSocket əlaqələrini məcburi bağlaya bilər.
Pusher texniki bloquna (2024) görə, aktiv hadisələr olmadıqda bir Pusher əlaqəsinin orta trafik istehlakı dəqiqədə 1–2 KB təşkil edir. Bu, 30 saniyə intervalı ilə optimallaşdırılmış heartbeat protokolu sayəsində əldə edilir. Orta ölçülü tətbiq batareya istehlakına əhəmiyyətli təsir göstərmədən 1000-ə qədər eyni vaxtda Pusher əlaqəsini dəstəkləyə bilər.
Pusher Beams — APNs (iOS) və FCM (Android) vasitəsilə mobil cihazlara push bildirişləri göndərmək üçün əlavə xidmət. Beams Pusher Channels ilə inteqrasiya olunur: kanaldakı hadisə, müştəri offline olduqda avtomatik olaraq push bildirişini tetikleye bilər. Bu, bağlı tətbiq zamanı mesajların çatdırılması problemini həll edir.
Pusher təhlükəsizliyi bir neçə səviyyədə həyata keçirilir. Pusher API-ə hər sorğu app_secret istifadə edərək HMAC-SHA256 ilə imzalanır. Bu, yalnız səlahiyyətli serverin hadisələri dərc edə biləcəyinə zəmanət verir. Müştəri SDK-ları tətbiqi identifikasiya etmək üçün app_key istifadə edir, lakin private və presence kanallarına daxil olmaq üçün əlavə autentifikasiya tələb olunur.
Private kanalların autentifikasiyası üç addımda baş verir: müştəri pusher.subscribe('private-channel') çağırır, Pusher Client SDK sizin backend son nöqtənizə (/pusher/auth) HTTP sorğusu göndərir, server istifadəçinin hüquqlarını yoxlayır və məxfi açarla imzalanmış auth tokeni qaytarır. Pusher imzanı yoxlayır və abunəliyə icazə verir.
Bütün sorğular üçün TLS əlaqələrindən istifadə etmək tövsiyə olunur (SDK-da useTLS: true ayarı). Pusher həmçinin REST API-ə server sorğuları üçün IP ünvanları ilə giriş məhdudiyyətini dəstəkləyir. Enterprise tarifləri üçün VPC (Virtual Private Cloud) və izolə edilmiş infrastruktura malik ayrılmış klasterlərin dəstəyi mövcuddur.
Tez-tez verilən suallar
Pusher — server idarəçiliyini tələb etməyən hosted-xidmətdir (SaaS). Socket.IO — özünüz qurmalı olduğunuz kitabxanadır. Pusher quraşdırmada daha sadədir, lakin miqyaslandırmada daha bahalıdır, Socket.IO DevOps işi tələb edir, lakin böyük həcmdə daha ucuzdur.
Pulsuz Sandbox planı 100 qoşulma və gündə 200 000 mesaj daxildir. Production planları ayda $49-dan (1000 qoşulma, limitsiz mesaj) fərdi şərtlərlə enterprise səviyyəsinə qədər başlayır.
Pusher HTTP long-polling-ə avtomatik fallback ilə WebSocket istifadə edir. Kritik mesajlar üçün Pusher tərəfində ən azı bir dəfə (at-least-once) çatdırılma zəmanəti ilə növbə mövcuddur.
Bəli, Pusher Rusiyadan Avropa klasteri (eu) vasitəsilə əlçatandır. Avropa məlumat mərkəzləri üçün gecikmə 50–100 ms təşkil edir. Məlumatların lokallaşdırılması tələbləri olan layihələr üçün alternativləri nəzərdən keçirmək tövsiyə olunur.
Əsas rəqiblər — Ably (oxşar funksionallıq, daha çevik tariflər), PubNub (qlobal çatdırılma şəbəkəsi), Socket.IO (self-hosted) və Firebase Realtime Database (Google ekosistemi).
Nəticələr
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun