Ably — en molnbaserad realtidsmeddelandeplattform som tillhandahåller infrastruktur för pub/sub-kommunikation, närvaro och tillståndssynkronisering. Den är utformad för enterprise-projekt med höga krav på tillförlitlighet och global tillgänglighet. Enligt officiell dokumentation för Ably (2025), garanterar plattformen 99,999% drifttid och leveransfördröjning under 65 ms i 95:e percentilen.
Huvudpunkter
Ably — en molnbaserad realtidsplattform som grundades 2014 och tillhandahåller infrastruktur för realtidsmeddelandeutbyte. Till skillnad från enkla pub-tjänster erbjuder Ably företagsleveransgarantier, ett globalt nätverk av närvaropunkter (POP) och inbyggd tillståndssynkronisering för miljontals samtidiga klienter.
Plattformen används i projekt där leveranspålitlighet är kritisk: finansiella tickers, logistiska spårare, medicinska övervakningssystem och flerspelarspel. Ably är baserat på egen distribuerad meddelandeförmedlarteknik som replikerar data genom ett globalt nätverk av 15+ datacenter.
Enligt Ablys officiella webbplats (2025), bearbetar plattformen över 200 miljarder meddelanden per månad för 50 000+ aktiva applikationer. Bland kunderna finns företag från Fortune 500-listan: Toyota (bildtelematik), HubSpot (CRM-synkronisering), Designity (gemensam redigering).
Ablys arkitektur är byggd på ett distribuerat nätverk av meddelandeförmedlare (routrar) som är sammanlänkade via höghastighetskanaler. Varje förmedlare betjänar en delmängd av kanaler och replikerar tillstånd via Ably-protokollet — ett binärt protokoll över WebSocket optimerat för minimal overhead. Klienter ansluter till närmaste förmedlare via DNS-lastbalansering.
Den viktigaste skillnaden mellan Ably och konkurrenter är den inbyggda globala loggen (global log) som lagrar meddelandehistorik för varje kanal. Detta gör att nya prenumeranter kan ta emot inte bara nya utan även tidigare meddelanden (replay), vilket är kritiskt för revision och återställning av tillstånd efter återanslutning.
Ablys interaktionsmodell följer mönstret Publisher-Subscriber med ytterligare funktioner. Utgivaren skickar ett meddelande till en kanal via Ablys REST API eller SDK. Meddelandet hamnar i kanalens globala distribuerade logg och skickas till alla prenumeranter via deras aktiva anslutningar.
Ablys transportlager stöder flera protokoll: WebSocket (primär, med binärt Ably-protokoll), Server-Sent Events (för envägsmottagning), HTTP streaming (för begränsade miljöer) och MQTT (för IoT-enheter). Klienten väljer automatiskt tillgänglig transport med lägst latens.
Varje meddelande genomgår validering på Ablys sida — kontroll av API-nyckelsignatur, kanalkvot, åtkomsträttigheter. Validering sker på 1–5 ms på kantroutern, varefter meddelandet replikeras till den globala loggen. Enligt Ablys tekniska blogg (2024) är end-to-end-fördröjningen mindre än 65 ms för 95 % av meddelandena vid interkontinental överföring.
Ablys kanaler — namngivna ämnen för meddelandeutbyte. Varje kanal kan ha ett obegränsat antal prenumeranter, men för stabil prestanda rekommenderas högst 10 000 per kanal inom en zon. Kanaler kan vara enkelriktade (publicering endast från servern) eller fullständiga (klienter publicerar meddelanden).
Pub/Sub-modellen i Ably utökar det klassiska mönstret med ytterligare funktioner: prenumeranters närvaro (presence), meddelandehistorik (history), kanaltillstånd (channel state) och namnrymder (namespaces). Varje kanal tillhör en namnrymd som bestämmer kvoter och åtkomsträttigheter.
Närvaro (Presence) — automatisk spårning av kanaldeltagare. Varje klient som prenumererar på en kanal registrerar sig i närvarokartan med clientId, status (online, away, offline) och godtycklig data. När klienten kopplas från (via timeout eller explicit) uppdateras närvaron automatiskt.
Meddelandehistorik — varje kanal lagrar som standard meddelandehistorik (upp till 2 minuter eller 100 meddelanden i gratisplanen). I betalda planer kan historiken förlängas upp till 72 timmar med möjlighet till godtycklig retrospektiv åtkomst. Historiken lagras i den distribuerade loggen med garanti för oföränderlighet (append-only).
| Funktion | Gratisplan | Enterpriseplan |
|---|---|---|
| Samtidiga anslutningar | 100 | 10 000+ |
| Historiklagring | 2 minuter / 100 meddelanden | 72 timmar |
| Leveransgaranti | At-least-once | Exactly-once |
| Regioner | 1 region | Alla 15+ regioner |
| SLA | 99,9% | 99,999% |
Leveransgarantier — den viktigaste skillnaden mellan Ably och de flesta realtidstjänster. Plattformen stöder flera leveranslägen som väljs vid publicering av ett meddelande. Läget avgör hur många gånger meddelandet levereras och hur anslutningsfel hanteras.
At-least-once — meddelandet levereras minst en gång, dubbletter är möjliga. Läget används för notifieringar och icke-kritisk data där dubbletter inte orsakar skada. Exactly-once — meddelandet levereras exakt en gång genom deduplicering på klient- och serversidan. Läget är obligatoriskt för finansiella transaktioner och enhetshantering.
Last-value cache — ett speciellt läge där kanalen lagrar det senaste värdet för varje namngivet meddelande. En ny prenumerant får omedelbart aktuell status utan att vänta på nästa händelse. Detta implementeras via ett globalt key-value-lager på varje router. Enligt Ablys dokumentation (2025) minskar last-value cache tiden för återställning av tillstånd efter återanslutning från 2–5 sekunder till 50–100 ms.
Komma igång med Ably kräver registrering, skapande av en applikation och inhämtning av en API-nyckel. Bibliotek finns tillgängliga för alla större plattformar. Låt oss titta på ett exempel på publicering och prenumeration med JavaScript SDK. Klienten ansluter med en API-nyckel, prenumererar på en kanal och kopplar en händelsehanterare.
Enligt Ablys dokumentation (2025) rekommenderas att använda olika API-nycklar för server- och klientsidan med minimala rättigheter (principen om minsta behörighet). Servernyckeln kan publicera i vilka kanaler som helst, klientnyckeln — kan endast prenumerera på vissa namnrymder.
import * as Ably from 'ably';
const client = new Ably.Realtime({
key: 'YOUR_API_KEY',
clientId: 'user-123'
});
const channel = client.channels.get('test-channel');
channel.subscribe('update', (message) => {
console.log('Mottaget:', message.data);
});
channel.publish('update', {
text: 'Hello from Ably',
priority: 1
});
const Ably = require('ably');
const rest = new Ably.Rest({ key: 'SERVER_API_KEY' });
const channel = rest.channels.get('test-channel');
channel.publish('server-event', {
type: 'notification',
payload: { userId: 100, text: 'Server message' }
}).then(() => {
console.log('Meddelande publicerat via REST');
});
Valet mellan Ably och Pusher beror på projektets krav. Båda plattformarna tillhandahåller värdbaserad realtidsinfrastruktur men skiljer sig i arkitektur, garantier och prissättning. Ably är inriktat på enterprise med höga tillförlitlighetskrav, Pusher — på snabb start och enkelhet.
Ably använder en global distribuerad logg för varje kanal, vilket säkerställer exactly-once-leverans och retrospektiv åtkomst till historik. Pusher använder en förmedlarearkitektur med at-least-once-garanti. För de flesta applikationer är skillnaden omärkbar, men för finansiella och medicinska system är exactly-once kritisk.
Enligt jämförelsetestet Ably vs Pusher (2024) uppvisar Ably 20–30% lägre latens vid interkontinental överföring tack vare fler datacenter. Pusher vinner i integrationshastighet — grundinställningen tar 10–15 minuter jämfört med 20–30 minuter för Ably på grund av fler konfigurationsalternativ.
Ably SDK för mobila plattformar stöder iOS (Swift), Android (Kotlin/Java), Flutter och React Native. Mobila klienter är fullt kompatibla med Ablys serverdel och stöder alla funktioner: pub/sub, presence, history, push-notiser. För Android finns integration med Firebase Cloud Messaging för offline-leverans av push-notiser.
Optimering för mobila nätverk — Ably SDK använder adaptiv heartbeat: på Wi-Fi är intervallet 15 sekunder, på mobilt nätverk — upp till 60 sekunder för att spara trafik. Vid anslutningsförlust växlar SDK till reservtransport (HTTP streaming) utan synlig fördröjning för användaren. Genomsnittlig trafikförbrukning — 0,5–1 KB per minut i standby-läge.
Push-notiser — Ably stöder sändning av push via APNs (Apple) och FCM (Firebase). Push kan riktas till en specifik kanal eller clientId. Om klienten är aktiv (WebSocket ansluten) levereras meddelandet via kanalen. Om klienten är frånkopplad levereras meddelandet som en push-notis. Detta garanterar att användaren aldrig missar ett viktigt meddelande.
Vanliga frågor
Ably erbjuder exactly-once-leverans, global distribuerad logg och 99,999% SLA. Pusher är enklare att konfigurera men ger endast at-least-once-garantier. Ably väljs ofta av enterprise-projekt med höga tillförlitlighetskrav.
Gratisplanen inkluderar 100 samtidiga anslutningar och 500 000 meddelanden per månad. Betalda planer börjar från $19/månad (1000 anslutningar). Enterprise-pris med anpassade garantier diskuteras individuellt.
Ja, exactly-once — en av Ablys nyckelfunktioner. Deduplicering utförs på plattformssidan med unika meddelandeidentifierare (message ID + connection ID).
För närvarande har Ably 15+ närvaropunkter över hela världen, inklusive USA, Europa, Asien, Australien och Sydamerika. Enterprise-kunder kan välja specifika regioner för datalagring.
Ja, Ably stöder MQTT-protokollet för IoT-enheter med låg strömförbrukning. För enheter som ESP32, Arduino och Raspberry Pi finns lätta SDK med minimalt minnesanvändning.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också