Realtidskommunikation är en oumbärlig del av moderna mobila applikationer. Enligt Grand View Research (2025) kommer marknaden för realtidsteknik att växa till 52 miljarder dollar år 2030. WebRTC, WebSocket och Socket.IO är de tre pelarna som chattar, samtal och notiser i realtid bygger på. Realtidsutveckling i mobila applikationer öppnar möjligheter för omedelbar kommunikation.
Viktiga punkter
Realtidskommunikation är teknologier som möjliggör datautbyte mellan klient och server med minimal fördröjning. Huvudprotokollen: WebSocket, SSE (Server-Sent Events), Long Polling och Short Polling. Var och en har sin nisch: WebSocket för tvåvägskommunikation, SSE för notiser, Long Polling som fallback för äldre webbläsare. Realtid i mobil utveckling är särskilt viktigt: användare förväntar sig omedelbar leverans av meddelanden och notiser. Kommunikation i mobil utveckling bygger just på dessa protokoll.
WebSocket är ett full duplex-protokoll (klient ↔ server). Efter handslaget (HTTP Upgrade) förblir anslutningen öppen. Header är minimala (2 byte jämfört med HTTP-header). Används i chattar (WhatsApp, Telegram), spel, realtidshandel. SSE är ett enkelriktat protokoll (server → klient). Klienten prenumererar på händelser och tar emot dem via en enda HTTP-anslutning. SSE är enklare, lättare att skala (vanlig HTTP), idealisk för Twitter-flöden, valutakurser, push-notiser.
Long Polling är en teknik där klienten gör en HTTP-förfrågan och håller den öppen tills servern skickar data eller en timeout inträffar (30–60 sek). Efter att ha tagit emot data öppnar klienten omedelbart en ny förfrågan. Long Polling är en fallback för WebSocket. Short Polling — klienten pollar servern var N:te sekund. Enklast men ineffektivt (de flesta förfrågningar returnerar tomma svar).
Innan en P2P-anslutning upprättas behöver enheterna en Signaleringsserver — en mellanhandsserver för att utbyta SDP-erbjudanden och ICE-kandidater mellan peers. Signalering kan implementeras via WebSocket, SSE eller något annat protokoll. Efter att anslutningen upprättats deltar signalering inte längre i överföringen av medietrafik.
WebRTC (Web Real-Time Communication) är en öppen teknik för P2P-ljud/video/data. Fungerar i webbläsare och inbyggda applikationer (iOS, Android). WebRTC inkluderar: getUserMedia (kamera/mikrofonåtkomst), RTCPeerConnection (P2P-anslutning), RTCDataChannel (dataöverföring). WebRTC möjliggör realtidskommunikation i mobila applikationer — kommunikation i mobila appar fungerar utan extra plugin-program.
Peer A skapar en RTCPeerConnection och ett SDP-erbjudande. Steg 2: Erbjudandet skickas via Signaleringsservern till Peer B. Steg 3: Peer B tar emot erbjudandet, skapar ett SDP-svar och skickar tillbaka. Steg 4: Båda peers samlar in ICE-kandidater (adresser för anslutning) och utbyter dem via Signalering. Steg 5: ICE-ramverket väljer den bästa vägen (P2P eller via TURN). Efter anslutning — medietrafik flödar direkt.
SDP (Session Description Protocol) är ett textprotokoll som beskriver anslutningsparametrar: codecs, IP-adresser, portar. ICE Candidate är ett förslag från STUN/TURN: "Jag kan hittas på denna adress". Ju fler kandidater, desto större chans för P2P.
| Parameter | Socket.IO | Pusher | Ably | PubNub |
|---|---|---|---|---|
| Typ | Bibliotek (med server) | SaaS | SaaS | SaaS |
| Protokoll | WebSocket + HTTP-fallback | WebSocket | WebSocket + SSE | WebSocket |
| Gratis gräns | Obegränsad (egen server) | 200k meddelanden/dag | 50k meddelanden/mån | 100 meddelanden/sek |
| Global replikering | Nej (egen server) | Ja | Ja (7 regioner) | Ja |
| Leveransgarantier | ACK + timeouter | WebSocket (best effort) | Exactly-once | At-least-once |
| Popularitet | Mycket hög | Hög | Växande | Hög |
Socket.IO är ledaren för startups: du kontrollerar servern, inga begränsningar. Pusher och Ably är för produkter där du inte vill hantera infrastruktur. PubNub är för IoT och global publik. IT Sectr rekommenderar Socket.IO för projekt med egen backend, Pusher för snabba prototyper, Ably för företag med tillförlitlighetskrav.
Realtidsplattformar tillhandahåller färdig serverinfrastruktur för WebSocket och SSE. De eliminerar behovet av att skriva en egen realtidsserver, balansera WebSocket-anslutningar och skala dem. Valet av plattform beror på budget, tillförlitlighetskrav och viljan att hantera en server. För realtid i mobil utveckling erbjuder plattformar färdiga klient-SDK:er och infrastruktur.
Socket.IO är ett bibliotek för Node.js och klienter (iOS, Android, webb). Baserat på WebSocket, men använder HTTP-polling som fallback. Stöder rum, namnrymder, ACK-bekräftelser. För utveckling — socket.io-client-java (Android) och socket.io-client-swift (iOS). Kommunikation i mobila appar på Socket.IO hanteras tillförlitligt tack vare automatisk återanslutning.
Pusher är en realtids-SaaS-plattform. Enkel integration: skapa en kanal och prenumerera på händelser. Pusher Channels för notiser, Pusher Beams för push-notiser. Ably är av företagsklass med global replikering i 7 datacenter. Garanterar exactly-once-leverans. Stöder SSE, WebSocket, MQTT för IoT. Båda plattformarna löser kommunikationsuppgifter i mobil utveckling utan att skriva serverkod.
STUN (Session Traversal Utilities for NAT) är en server som hjälper en enhet att upptäcka sin externa IP och port bakom NAT. Enheten skickar en STUN-förfrågan, servern svarar: "Du är synlig som 203.0.113.5:45678". STUN används gratis (Google STUN: stun.l.google.com:19302). I sammanhanget av realtidsinfrastruktur är STUN det första steget för att upprätta en P2P-kanal.
TURN (Traversal Using Relays around NAT) är en reläserver som vidarebefordrar medietrafik om en P2P-anslutning är omöjlig (t.ex. båda enheterna bakom symmetrisk NAT). TURN förbrukar serverbandbredd, så det är dyrt. I WebRTC försöker ICE-ramverket först P2P, sedan TURN som sista utväg. Realtid i utveckling kräver TURN för kommunikation i mobila appar vid anslutning via företagsnätverk.
ICE (Interactive Connectivity Establishment) är ett ramverk som samlar in alla möjliga anslutningsvägar (lokal IP, extern IP via STUN, TURN-reläer) och väljer den bästa. ICE Candidate är varje möjlig väg. Ju fler kandidater, desto högre sannolikhet för framgångsrik P2P.
P2P är en direkt anslutning mellan två enheter utan en mellanhandsserver för medietrafik. P2P minskar latens (< 100 ms) och serverkostnader. Nackdelar: svagt NAT-skydd, behov av STUN/TURN. WebRTC använder P2P som standard.
Peer-to-Peer (P2P) är en arkitektur där data överförs direkt mellan enheter. I sammanhanget av realtidskommunikation används P2P i WebRTC för att minimera latens. ICE (Interactive Connectivity Establishment) är mekanismen som hittar den bästa vägen för en P2P-anslutning. För utveckling är P2P det optimala sättet att organisera kommunikation i mobila appar i realtid.
ICE samlar in ICE Candidate av tre typer: 1) host (lokal IP), 2) srflx (via STUN), 3) relay (via TURN). Alla kandidater sorteras och ICE försöker ansluta till var och en i prioriteringsordning. Den första framgångsrika anslutningen används. Om P2P inte är möjligt används TURN (men det är dyrt).
Vanliga frågor
WebSocket är för tvåvägskommunikation i mobila applikationer (chatt, spel, gemensam redigering). SSE är för enkelriktade notiser från servern till klienten (nyhetsflöde, kursnoteringar). WebSocket är mer komplext, SSE är enklare och lättare att skala.
STUN är en server som hjälper till att upprätta en direkt P2P-anslutning genom att bestämma en enhets externa IP och port. TURN är en reläserver som vidarebefordrar trafik om P2P inte är möjligt (bakom symmetrisk NAT). TURN är dyrare eftersom det förbrukar serverbandbredd.
Socket.IO är för enkla chattar och notiser om du har din egen server. Pusher är för snabb start utan serverinfrastruktur. Ably är för företagskrav med global replikering. IT Sectr rekommenderar Socket.IO som det mest flexibla och gratis alternativet för kommunikation i mobil utveckling.
En Signaleringsserver är en mellanhandsserver genom vilken två enheter utbyter SDP-erbjudanden och ICE-kandidater för att upprätta en WebRTC-anslutning. Efter utbytet flödar medietrafik direkt P2P, förbi signaleringen.
Short Polling — klienten pollar ständigt servern med fasta intervall (även om det inte finns någon data). Long Polling — klienten gör en förfrågan och väntar på att servern ska skicka data eller en timeout. Long Polling är effektivare men fortfarande sämre än WebSocket.
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.