Pusher: ikki tomonlama real-time aloqa uchun hosted-xizmat, kanallar, hodisalar va webhook bildirishnomalari uchun infratuzilma taqdim etadi. U dasturchini o'z WebSocket serverini o'rnatish zaruratidan ozod qiladi va millionlab qurilmalarga xabarlarni yetkazib berishni ta'minlaydi. Pusher rasmiy hujjatlariga (2025) ko'ra, xizmat har oy butun dunyo bo'ylab 40 milliarddan ortiq xabarlarni qayta ishlaydi.
Asosiy fikrlar
Pusher — 2011-yilda tashkil etilgan ikki tomonlama real-time aloqa uchun bulutli xizmat. U o'z WebSocket serverini boshqarmasdan real-time xabarlarni yuborish va qabul qilish uchun tayyor infratuzilmani taqdim etadi. Pusher chatlar, jonli bildirishnomalar, birgalikda tahrirlash va o'yin yetakchilar jadvallarini yaratish uchun ishlatiladi.
O'z serverini o'rnatish va saqlashni talab qiladigan Socket.IO kabi kutubxonalardan farqli o'laroq, Pusher SaaS (Software as a Service) modeli bilan ishlaydi. Dasturchi ro'yxatdan o'tadi, kalitlarni (app_id, key, secret) oladi va hodisalarni nashr etish uchun Pusher REST API-dan foydalanadi. Server infratuzilmasi to'liq Pusher platformasi tomonidan boshqariladi.
Pusher rasmiy blogiga (2025) ko'ra, platforma butun dunyo bo'ylab 250 000 dan ortiq faol loyihalarga xizmat ko'rsatadi. Taniqli mijozlar orasida GitHub (real-time bildirishnomalar), Trello (taxtalarni sinxronlashtirish) va Intercom (qo'llab-quvvatlash chat) bor. Pusher kechikishlarni minimal darajaga tushirish uchun AQSh, Yevropa va Osiyoda ma'lumotlar markazlarini qo'llab-quvvatlaydi.
Pusher 2011-yilda WebSocket uchun birinchi hosted-xizmatlardan biri sifatida ishga tushirilgan. 2014-yilda kompaniya Pusher Channels ni taqdim etdi — private va presence kanallarini qo'llab-quvvatlaydigan joriy arxitektura. 2017-yilda server tomoni hodisalari uchun webhook qo'llab-quvvatlandi. 2022-yilda Pusher Pusher Beams — mobil platformalar uchun push-bildirishnomalar xizmatini ishga tushirdi.
Pusher arxitekturasi self-hosted yechimlardan farq qiladi, chunki obunalarni qayta ishlash, ulanishlarni boshqarish va hodisalarni marshrutlash Pusher Cloud tomonidan amalga oshiriladi. Dasturchi faqat o'z backend-i orqali private kanallarning autentifikatsiyasini boshqaradi.
Pusher arxitekturasi Publisher-Subscriber modeliga asoslangan. Server ilovalari Pusher REST API orqali hodisalarni nashr etadi, mijoz ilovalari esa ularni doimiy WebSocket ulanishi orqali oladi. Pusher nashr etuvchilar va obunachilar o'rtasida vositachi rolini o'ynaydi.
Server Pusher API-ga POST so'rovi orqali hodisa yuborganda, platforma maqsadli kanalni aniqlaydi va xabarni ushbu kanalga obuna bo'lgan barcha mijozlarga tarqatadi. Mijozlar hodisani allaqachon ochilgan WebSocket ulanishi orqali oladi, bu geografik joylashuvga qarab 50–100 ms kechikishni ta'minlaydi.
Har bir mijoz Pusher Client SDK orqali ulanishni o'rnatadi, u avtomatik ravishda transportni tanlaydi (WebSocket — ustuvor, HTTP long-polling — fallback). SDK dasturchi ishtirokisiz qayta ulanish, ma'lumotlarni seriyalashtirish va xatolarni qayta ishlashni boshqaradi. Pusher texnik hujjatlariga (2025) ko'ra, tarmoq uzilishida qayta ulanish vaqti 1 soniyadan kam.
Tizim uch komponentdan iborat: Pusher Server API (hodisalarni nashr etish uchun REST so'nggi nuqtalari), Pusher Client SDK (hodisalarga obuna bo'lish uchun kutubxonalar) va Pusher WebHook (ulanish/uzilish hodisalari haqida server bildirishnomalari). Barcha komponentlar asinxron va mustaqil ishlaydi.
Pusher Channels uch turdagi kanallarni qo'llab-quvvatlaydi, ularning har biri turli foydalanish stsenariylari uchun mo'ljallangan. Kanal turini tanlash kirish darajasini, autentifikatsiya mexanizmini va mavjud imkoniyatlarni belgilaydi.
| Kanal turi | Prefiks | Autentifikatsiya | Foydalanish |
|---|---|---|---|
| Public | channel- | Talab qilinmaydi | Ommaviy ma'lumotlar: valyuta kurslari, ob-havo, yangiliklar lentasi |
| Private | private- | Serverda so'rovni imzolash | Shaxsiy bildirishnomalar, chatlar, foydalanuvchi ma'lumotlari |
| Presence | presence- | Imzo + foydalanuvchi haqida ma'lumot | Onlayn holat, o'yin xonalari, birgalikda tahrirlash |
Public kanallar autentifikatsiyasiz barcha mijozlar uchun mavjud va translyatsiya ma'lumotlari uchun mos keladi. Private kanallar dasturchi serveri orqali autentifikatsiyani talab qiladi: mijoz o'z backend-iga socket_id va channel_name bilan so'rov yuboradi, server so'rovni Pusher maxfiy kaliti bilan imzolaydi va auth tokenini qaytaradi. Presence kanallari qo'shimcha ravishda foydalanuvchi haqida ma'lumot (user_id, user_info) uzatadi va kim onlayn ekanligini kuzatishga imkon beradi.
Pusher hujjatlariga (2025) ko'ra, bitta kanalga bir vaqtning o'zida ulangan mijozlarning maksimal soni public va private kanallar uchun 10 000. Presence kanallari uchun cheklov har bir kanal uchun 10 000 foydalanuvchi, ilova bo'yicha 100 000 foydalanuvchigacha qo'llab-quvvatlanadi.
Pusher hodisa modeli kanalda nashr etiladigan nomlangan hodisalarga asoslangan. Har bir hodisaning nomi (maksimal 200 belgi), JSON formatidagi ma'lumotlari va hodisa boshlovchisiga qayta yuborilishni istisno qilish uchun ixtiyoriy socket_id mavjud.
Triggerlar — bu Pusher API-ga kanalda hodisani nashr etadigan HTTP POST so'rovlari. So'rov formati: POST /apps/{app_id}/events, channel, name va data o'z ichiga olgan holda. Pusher Server API rasmiy kutubxonalar (PHP, Ruby, Python, Go, Java, Node.js) orqali istalgan server muhitidan triggerlarni qo'llab-quvvatlaydi.
Pusher batch-triggerlarni qo'llab-quvvatlaydi — bitta so'rov bilan bir hodisani bir nechta kanalda nashr etish. Bu ketma-ket chaqiruvlardan samaraliroq va yetkazib berishning atomarligini ta'minlaydi. Pusher performans testlariga (2024) ko'ra, 100 kanalda batch-trigger 30–50 ms davom etadi, ketma-ket chaqiruvlar esa 2–5 soniya davom etadi.
Pusher WebHook serveringizga infratuzilma hodisalari haqida bildirishnomalar olish imkonini beradi: mijoz ulanishi, uzilishi, xatolik yuz berishi. Webhook so'rovlari tekshirish uchun HMAC-SHA256 bilan imzolanadi. Bu jurnallashtirish, analitika va holat sinxronizatsiyasi uchun juda muhimdir.
Pusher integratsiyasi ikki qismdan iborat: server tomoni (hodisalarni nashr etish) va mijoz tomoni (hodisalarga obuna bo'lish). Server qismi uchun Node.js va mijoz qismi uchun JavaScript misolini ko'rib chiqaylik. Boshlash uchun Pusher panelida ilova yaratish va hisob ma'lumotlarini olish kerak.
Pusher hujjatlariga (2025) ko'ra, asosiy reja (Sandbox) 100 ta bir vaqtda ulanish va kuniga 200 000 xabarni o'z ichiga oladi — ishlab chiqish va sinov uchun yetarli. Ishlab chiqarish rejalari 1000 ulanish uchun oyiga $49 dan boshlanadi.
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('Hodisa nashr etildi');
}).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('Qabul qilingan hodisa:', data);
displayNotification(data.message);
});
Pusher SDK taqdim etadi iOS (Swift) va Android (Java/Kotlin) uchun, ular JavaScript mijozining funksionalligini to'liq takrorlaydi. Mobil SDK-lar bir xil kanal turlarini, autentifikatsiya mexanizmini va hodisa modelini qo'llab-quvvatlaydi. React Native uchun JavaScript ko'prigi orqali ishlaydigan pusher-js paketi mavjud.
Mobil qurilmalarda Pusher SDK eksponensial kechikish bilan qayta ulanish mexanizmidan foydalanib, Wi-Fi va mobil tarmoq o'rtasida avtomatik o'tishni boshqaradi. Bu, ayniqsa, iOS ilovalari uchun muhim, chunki iOS fon ishi vaqtida WebSocket ulanishlarini majburan yopishi mumkin.
Pusher texnik blogiga (2024) ko'ra, faol hodisalar bo'lmaganda bitta Pusher ulanishining o'rtacha trafik iste'moli daqiqada 1–2 KB ni tashkil qiladi. Bu 30 soniya oralig'i bilan optimallashtirilgan heartbeat protokoli tufayli erishiladi. O'rtacha o'lchamdagi ilova batareya iste'moliga sezilarli ta'sir ko'rsatmasdan 1000 tagacha bir vaqtda Pusher ulanishini qo'llab-quvvatlashi mumkin.
Pusher Beams — APNs (iOS) va FCM (Android) orqali mobil qurilmalarga push bildirishnomalarini yuborish uchun qo'shimcha xizmat. Beams Pusher Channels bilan integratsiyalanadi: kanaldagi hodisa, mijoz oflayn bo'lganda avtomatik ravishda push bildirishnomasini tetiklashi mumkin. Bu yopiq ilova vaqtida xabarlarni yetkazib berish muammosini hal qiladi.
Pusher xavfsizligi bir necha darajada amalga oshiriladi. Pusher API-ga har bir so'rov app_secret yordamida HMAC-SHA256 bilan imzolanadi. Bu faqat vakolatli server hodisalarni nashr eta olishini kafolatlaydi. Mijoz SDK-lari ilovani identifikatsiya qilish uchun app_key dan foydalanadi, ammo private va presence kanallariga kirish uchun qo'shimcha autentifikatsiya talab qilinadi.
Private kanallarni autentifikatsiya qilish uch bosqichda amalga oshiriladi: mijoz pusher.subscribe('private-channel') ni chaqiradi, Pusher Client SDK sizning backend so'nggi nuqtangizga (/pusher/auth) HTTP so'rovi yuboradi, server foydalanuvchining huquqlarini tekshiradi va maxfiy kalit bilan imzolangan auth tokenini qaytaradi. Pusher imzoni tekshiradi va obunaga ruxsat beradi.
Barcha so'rovlar uchun TLS ulanishlaridan foydalanish tavsiya etiladi (SDKda useTLS: true sozlamasi). Pusher shuningdek REST API-ga server so'rovlari uchun IP manzillar bo'yicha kirishni cheklashni qo'llab-quvvatlaydi. Enterprise tariflari uchun VPC (Virtual Private Cloud) va izolyatsiya qilingan infratuzilmaga ega ajratilgan klasterlar qo'llab-quvvatlanadi.
Tez-tez beriladigan savollar
Pusher — server boshqaruvini talab qilmaydigan hosted-xizmat (SaaS). Socket.IO — o'zingiz o'rnatishingiz kerak bo'lgan kutubxona. Pusher sozlashda soddaroq, lekin masshtablashda qimmatroq, Socket.IO DevOps ishini talab qiladi, lekin katta hajmda arzonroq.
Bepul Sandbox rejasi 100 ta ulanish va kuniga 200 000 xabarni o'z ichiga oladi. Ishlab chiqarish rejalari oyiga $49 dan (1000 ulanish, cheksiz xabarlar) individual shartlar bilan enterprise darajasigacha boshlanadi.
Pusher avtomatik HTTP long-polling-ga fallback bilan WebSocket dan foydalanadi. Kritik xabarlar uchun Pusher tomonida kamida bir marta (at-least-once) yetkazib berish kafolati bilan navbat mavjud.
Ha, Pusher Rossiyadan Yevropa klasteri (eu) orqali mavjud. Yevropa ma'lumotlar markazlari uchun kechikish 50–100 ms ni tashkil qiladi. Ma'lumotlarni lokalizatsiya qilish talablari bo'lgan loyihalar uchun alternativlarni ko'rib chiqish tavsiya etiladi.
Asosiy raqobatchilar — Ably (o'xshash funksionallik, moslashuvchan tariflar), PubNub (global yetkazib berish tarmog'i), Socket.IO (self-hosted) va Firebase Realtime Database (Google ekotizimi).
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.