Onafhankelijke vergelijking · geen betaalde rankings
Home / Blog / Gids / WebSocket: real-time hosten zonder verbindingen uit te putten

WebSocket: real-time hosten zonder verbindingen uit te putten

Elke open WebSocket-client verbruikt geheugen en bestandsdescriptors, veel meer dan een typisch HTTP-verzoek. Realtime vereist speciale reverse proxy, time-outs en schaling.

Redactie Hébergeurs.eu 4 min Bijgewerkt 19 jul. 2026

Een supportchat die in Node.js is geïmplementeerd, werkt perfect bij staging: twintig testers, onmiddellijke latentie. In productie op dezelfde VPS, 300 agenten verbonden – de server geeft aan dat er “te veel open bestanden” zijn, nginx retourneert 502 en verbindingen vallen elke 60 seconden weg omdat niemand de standaard proxy_read_timeout heeft opgemerkt.

WebSocket is niet een beetje langer HTTP. Het is een ander bronmodel: aanhoudende verbindingen, geheugen per klant, hartslagen en vaak uitzendingen die elk bericht versterken. Realtime hosten zonder plan betekent het omzetten van een productsucces in een voorspelbaar infrastructuurincident.

WebSocket versus HTTP: wat een verbinding werkelijk verbruikt

BronKort HTTP-verzoekOpen WebSocket
Bestandsbeschrijvingen1 vervolgens vrijgegeven1 onderhouden uren
App-servergeheugenGerecycleerde zwembadwerkerBuffer + sessiestatus
VerwerkerPiek voor zoekopdrachtHartslag + vervolgberichten
ProxyStaatloos, gemakkelijkUpgrade + time-out om te configureren
OpschalenEnkele horizontaleAffiniteit of pub/sub vereist

Vuistregel: schat 50 KB tot 200 KB geheugen per verbinding, afhankelijk van de stack (Node, GB, Elixir variëren). 5.000 verbindingen × 100 KB ≈ 500 MB — vóór bedrijfscode.

Het nummer dat als eerste doodgaat is niet de CPU - het is ulimit -n en de proxy-time-out.

Omgekeerde proxy: nginx vóór de realtime applicatie

Minimale nginx-configuratie:


locatie /ws/ {

    proxy_pass http://127.0.0.1:3000;

    proxy_http_versie 1.1;

    proxy_set_header Upgrade $http_upgrade;

    proxy_set_header Verbinding "upgrade";

    proxy_set_header Host $host;

    proxy_read_timeout 3600s;

    proxy_send_timeout 3600s;

}

Vaak vergeten punten: de globale limiet worker_connections nginx versus WebSocket-verbindingen; TLS-beëindiging bij proxy — sommige hosts beperken gelijktijdige SSL-verbindingen; HTTP/2 aan de openbare clientzijde, HTTP/1.1 Upgrade upstream.

Zie ook WebSocket timeout proxy en Nginx ou Apache.

Horizontale schaling: affiniteit versus makelaar

Optie A: Sticky-sessies. De load balancer stuurt de client naar hetzelfde knooppunt. Eenvoudig, kwetsbaar als het knooppunt valt (massale herverbinding).

Optie B — Redis pub/sub- of Socket.IO-adapter. Berichten gerouteerd tussen knooppunten; gedistribueerde verbindingen. Vereist vanaf twee of meer exemplaren.

Optie C — Beheerde service (Pusher, Ably, beheerde Mercure-hub). Complexiteit uitbesteden; kosten per bericht.

Voor een serieuze MVP verslaat optie B op twee kleine VPS een enkele grote server zonder pub/sub.

Hosting: vragen om aan de provider te stellen

Voordat u een keuze maakt, moet u zich afvragen of lange verbindingen zijn toegestaan (gedeeld, vaak geknipt), wat de limiet voor de bestandsdescriptor is, of UDP of QUIC worden gefilterd voor WebTransport, of de Layer 7 load balancer de WebSocket Upgrade ondersteunt en of anti-DDoS ten onrechte langzame verbindingen kan blokkeren.

Cloud VPS (Hetzner, OVH, Scaleway) met nginx blijft de meest voorspelbare combinatie voor zelf-gehoste WebSocket.

Hartslagen, herverbinding en waarneembaarheid

Stuur elke 30 seconden een applicatieping/pong om dode verbindingen te detecteren. Pas een exponentieel uitstel toe aan de clientzijde om te voorkomen dat de server bij het opnieuw opstarten overbelast raakt. Meet actieve verbindingen, berichten per seconde en bezorglatentie in het 99e percentiel. Plan een sierlijke stop: stopsignaal, stop accepteren, 30 seconden leeglopen.

De top: realtime schalen in verbindingen, niet in paginaweergaven

Het verkopen van “live chat” zonder maximale verbindingscijfers, proxy-time-out en pub/sub-abonnement is het verkopen van een functie die het eerste succes niet overleeft.

Beslis en ga vooruit zonder blinde vlek

Bereken eerst het maximale aantal verbindingen × geheugen en vink ulimit aan. Configureer nginx-time-outs vóór het starten. Test het opnieuw verbinden na de implementatie, niet alleen tijdens het nominale traject. Plan Redis pub/sub vóór de tweede server. Zet een dashboard op van actieve verbindingen met waarschuwing bij 80% van de drempel.

Verken VPS en cloud in de overzicht en de vergelijking.

Veelgestelde vragen

Hoeveel WebSocket-verbindingen kan een server bevatten?

Het hangt af van het geheugen per verbinding, bestandsdescriptors en nginx. Duizenden inactieve verbindingen zijn mogelijk; veel minder als elk bericht zwaar werk met zich meebrengt.

Heeft u een sticky sessie nodig achter een load balancer?

Ja, als de toestand in het procesgeheugen leeft. Gebruik anders Redis pub/sub of een speciale hub om de status tussen knooppunten te delen.

Ondersteunt gedeeld WebSocket?

Vaak gedeeltelijk of met korte time-outs (30 tot 60 seconden). Controleer de documentatie van de hostingprovider; sommige panelen verbreken lange verbindingen.

Nginx of Apache vóór Node.js WebSocket?

Nginx komt vaker voor met Upgrade-headers en proxy_read_timeout aangepast (vaak 3600 seconden of meer). Apache mod_proxy_wstunnel werkt, maar komt minder vaak voor in realtime productie.


Realtime wordt gemeten in open verbindingen – niet in unieke bezoekers van de afgelopen maand.

Vergelijk Europese providers

Filter op compliance, locatie en gebruikssituatie — open daarna de fiches om het echte bereik te controleren.

Blader door het overzicht
Blog

Gerelateerde lectuur

Alle artikelen →