Pusher: hostovaná služba pro obousměrnou real-time komunikaci, poskytující infrastrukturu pro kanály, události a webhook oznámení. Osvobozuje vývojáře od nutnosti nasazovat vlastní WebSocket server a zajišťuje doručování zpráv milionům zařízení. Podle oficiální dokumentace Pusher (2025), služba zpracovává více než 40 miliard zpráv měsíčně po celém světě.
Hlavní body
Pusher — cloudová služba pro obousměrnou real-time komunikaci, založená v roce 2011. Poskytuje hotovou infrastrukturu pro odesílání a přijímání zpráv v reálném čase bez nutnosti spravovat vlastní WebSocket server. Pusher se používá pro vytváření chatů, živých oznámení, společné úpravy a herních žebříčků.
Na rozdíl od knihoven jako Socket.IO, které vyžadují nasazení a údržbu vlastního serveru, Pusher funguje na modelu SaaS (Software as a Service). Vývojář se zaregistruje, získá klíče (app_id, key, secret) a používá REST API Pusher k publikování událostí. Serverová infrastruktura je plně spravována platformou Pusher.
Podle oficiálního blogu Pusher (2025), platforma obsluhuje více než 250 000 aktivních projektů po celém světě. Mezi známé klienty patří GitHub (oznámení v reálném čase), Trello (synchronizace tabulí) a Intercom (podpůrný chat). Pusher podporuje datová centra v USA, Evropě a Asii pro minimalizaci zpoždění.
Pusher byl spuštěn v roce 2011 jako jedna z prvních hostovaných služeb pro WebSocket. V roce 2014 společnost představila Pusher Channels — současnou architekturu s podporou private a presence kanálů. V roce 2017 byla přidána podpora webhook pro serverové události. V roce 2022 Pusher spustil Pusher Beams — službu push oznámení pro mobilní platformy.
Architektura Pusher se liší od self-hosted řešení tím, že veškeré zpracování předplatného, správa připojení a směrování událostí probíhá na straně Pusher Cloud. Vývojář spravuje pouze autentizaci private kanálů prostřednictvím svého backendu.
Architektura Pusher je založena na modelu Publisher-Subscriber. Serverové aplikace publikují události prostřednictvím REST API Pusher a klientské aplikace je přijímají prostřednictvím trvalého WebSocket připojení. Pusher funguje jako prostředník mezi vydavateli a odběrateli.
Když server odešle událost prostřednictvím požadavku POST na API Pusher, platforma určí cílový kanál a rozešle zprávu všem klientům přihlášeným k tomuto kanálu. Klienti obdrží událost prostřednictvím již otevřeného WebSocket připojení, což zajišťuje latenci 50–100 ms v závislosti na geografické poloze.
Každý klient naváže připojení prostřednictvím Pusher Client SDK, které automaticky vybírá přenos (WebSocket — priorita, HTTP long-polling — fallback). SDK spravuje opětovné připojení, serializaci dat a zpracování chyb bez účasti vývojáře. Podle technické dokumentace Pusher (2025), doba opětovného připojení při přerušení sítě je méně než 1 sekunda.
Systém se skládá ze tří komponent: Pusher Server API (REST koncové body pro publikování událostí), Pusher Client SDK (knihovny pro odběr událostí) a Pusher WebHook (oznámení serveru o událostech připojení/odpojení). Všechny komponenty pracují asynchronně a nezávisle.
Pusher Channels podporuje tři typy kanálů, z nichž každý je určen pro různé scénáře použití. Volba typu kanálu určuje úroveň přístupu, mechanismus autentizace a dostupné možnosti.
| Typ kanálu | Předpona | Autentizace | Použití |
|---|---|---|---|
| Public | channel- | Není vyžadována | Veřejná data: směnné kurzy, počasí, zpravodajský kanál |
| Private | private- | Podpis požadavku na serveru | Osobní oznámení, chaty, uživatelská data |
| Presence | presence- | Podpis + informace o uživateli | Online stav, herní místnosti, společná úprava |
Public kanály jsou přístupné všem klientům bez autentizace a jsou vhodné pro vysílací data. Private kanály vyžadují autentizaci prostřednictvím serveru vývojáře: klient odešle požadavek na svůj backend s socket_id a channel_name, server podepíše požadavek tajným klíčem Pusher a vrátí auth token. Presence kanály navíc přenášejí informace o uživateli (user_id, user_info) a umožňují sledovat, kdo je online.
Podle dokumentace Pusher (2025), maximální počet současně připojených klientů na jeden kanál je 10 000 pro public a private kanály. Pro presence kanály je limit 10 000 uživatelů na kanál s podporou až 100 000 uživatelů na aplikaci.
Model událostí Pusher je založen na pojmenovaných událostech, které jsou publikovány v kanálu. Každá událost má název (maximálně 200 znaků), data ve formátu JSON a volitelný socket_id pro vyloučení opětovného odeslání iniciátorovi události.
Triggery — jsou HTTP POST požadavky na API Pusher, které publikují událost v kanálu. Formát požadavku: POST /apps/{app_id}/events s tělem obsahujícím channel, name a data. Pusher Server API podporuje triggery z jakéhokoli serverového prostředí prostřednictvím oficiálních knihoven (PHP, Ruby, Python, Go, Java, Node.js).
Pusher podporuje batch triggery — publikování jedné události do více kanálů jedním požadavkem. To je efektivnější než sekvenční volání a zaručuje atomicitu doručení. Podle testů výkonu Pusher (2024), batch trigger na 100 kanálů trvá 30–50 ms, zatímco sekvenční volání trvá 2–5 sekund.
Pusher WebHook umožňuje vašemu serveru přijímat oznámení o událostech infrastruktury: připojení klienta, odpojení, výskyt chyby. Webhook požadavky jsou podepsány HMAC-SHA256 pro ověření. To je klíčové pro logování, analytiku a synchronizaci stavu.
Integrace Pusher se skládá ze dvou částí: serverové (publikování událostí) a klientské (odběr událostí). Podívejme se na příklad v Node.js pro serverovou část a JavaScript pro klientskou část. Pro začátek je třeba vytvořit aplikaci v Pusher dashboardu a získat přihlašovací údaje.
Podle dokumentace Pusher (2025), základní plán (Sandbox) zahrnuje až 100 současných připojení a 200 000 zpráv denně — dost pro vývoj a testování. Produkční plány začínají od $49 měsíčně za 1000 připojení.
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('Událost publikována');
}).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('Přijatá událost:', data);
displayNotification(data.message);
});
Pusher poskytuje SDK pro iOS (Swift) a Android (Java/Kotlin), které plně kopírují funkčnost JavaScriptového klienta. Mobilní SDK podporují stejné typy kanálů, mechanismus autentizace a model událostí. Pro React Native je k dispozici balíček pusher-js fungující přes JavaScriptový most.
Na mobilních zařízeních Pusher SDK automaticky zpracovává přepínání mezi Wi-Fi a mobilní sítí pomocí mechanismu opětovného připojení s exponenciálním zpožděním. To je důležité zejména pro iOS aplikace, kde iOS může vynutit uzavření WebSocket připojení při práci na pozadí.
Podle technického blogu Pusher (2024), průměrná spotřeba provozu jednoho Pusher připojení je 1–2 KB za minutu při absenci aktivních událostí. Toho je dosaženo pomocí optimalizovaného heartbeat protokolu s intervalem 30 sekund. Středně velká aplikace může podporovat až 1000 současných Pusher připojení bez významného vlivu na spotřebu baterie.
Pusher Beams — doplňková služba pro odesílání push oznámení na mobilní zařízení prostřednictvím APNs (iOS) a FCM (Android). Beams se integruje s Pusher Channels: událost z kanálu může automaticky spustit push oznámení, pokud je klient offline. To řeší problém doručování zpráv při zavřené aplikaci.
Bezpečnost Pusher je implementována na několika úrovních. Každý požadavek na Pusher API je podepsán HMAC-SHA256 pomocí app_secret. To zaručuje, že pouze autorizovaný server může publikovat události. Klientské SDK používají app_key pro identifikaci aplikace, ale pro přístup k private a presence kanálům je vyžadována další autentizace.
Autentizace private kanálů probíhá ve třech krocích: klient zavolá pusher.subscribe('private-channel'), Pusher Client SDK odešle HTTP požadavek na váš backendový koncový bod (/pusher/auth), server zkontroluje práva uživatele a vrátí auth token podepsaný tajným klíčem. Pusher ověří podpis a povolí odběr.
Doporučuje se používat TLS připojení pro všechny požadavky (nastavení useTLS: true v SDK). Pusher také podporuje omezení přístupu podle IP adres pro serverové požadavky na REST API. Pro enterprise tarify je k dispozici podpora VPC (Virtual Private Cloud) a vyhrazených clusterů s izolovanou infrastrukturou.
Často kladené otázky
Pusher — je hostovaná služba (SaaS), která nevyžaduje správu serveru. Socket.IO — je knihovna, kterou musíte nasadit sami. Pusher je jednodušší na nastavení, ale dražší při škálování, Socket.IO vyžaduje DevOps práci, ale je levnější při velkém objemu.
Bezplatný plán Sandbox zahrnuje 100 připojení a 200 000 zpráv denně. Produkční plány začínají od $49/měsíc (1000 připojení, neomezené zprávy) až po enterprise s individuálními podmínkami.
Pusher používá WebSocket s automatickým fallbackem na HTTP long-polling. Pro kritické zprávy je k dispozici fronta na straně Pusher s garancí doručení alespoň jednou (at-least-once).
Ano, Pusher je dostupný z Ruska prostřednictvím evropského clusteru (eu). Zpoždění je 50–100 ms pro evropská datová centra. Pro projekty s požadavky na lokalizaci dat se doporučuje zvážit alternativy.
Hlavní konkurenti jsou Ably (podobná funkcionalita, flexibilnější tarify), PubNub (globální doručovací síť), Socket.IO (self-hosted) a Firebase Realtime Database (ekosystém Google).
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také