Een WebSocket is een communicatieprotocol dat de verbinding tussen een client (zoals een browser of app) en een server open houdt, zodat beide kanten elkaar op elk moment berichten kunnen sturen. Bij gewone HTTP moet de client om elke update vragen; bij een WebSocket stuurt de server nieuwe gegevens door zodra ze er zijn. Daarom zijn WebSockets de standaard voor realtime toepassingen: live koersen, chat, meldingen, dashboards en multiplayergames. Het protocol is vastgelegd als RFC 6455 en wordt door alle moderne browsers ondersteund.
Hoe werkt een WebSocket?
- Handshake: de client begint met een normaal HTTP-verzoek met de header
Upgrade: websocket; de server stemt in en de verbinding schakelt over op het WebSocket-protocol. - Blijvende verbinding: de verbinding blijft open over één TCP-verbinding, via
ws://of versleuteld viawss://. - Berichten in twee richtingen: client en server sturen onafhankelijk van elkaar tekst- of binaire berichten, met heel weinig overhead per bericht.
- Heartbeats: ping/pong-berichten controleren of de verbinding nog leeft.
- Afsluiten: beide kanten kunnen de verbinding sluiten; clients horen automatisch opnieuw te verbinden als die wegvalt.
WebSocket, polling, SSE of webhooks?
- Polling: de client vraagt elke paar seconden of er nieuws is. Eenvoudig, maar traag en verspillend.
- Server-Sent Events (SSE): de server streamt updates via HTTP, maar alleen in één richting. Een goede keuze als de client alleen hoeft te luisteren.
- Webhooks: een server roept bij een gebeurtenis een URL van een andere server aan. Geschikt voor meldingen tussen servers, niet voor live verbindingen met browsers of apps.
- WebSocket: twee richtingen, lage latency, ideaal bij frequente updates of als de client ook continu gegevens stuurt.
Waar worden WebSockets gebruikt?
Handelsplatformen en cryptobeurzen streamen koersen, orderboekwijzigingen en orderupdates via WebSockets; de meeste beurs- en broker-API's bieden naast hun REST API een WebSocket-feed. Andere typische toepassingen zijn chat- en supporttools, live dashboards voor logistiek of productie, samen bewerken van documenten, meldingen en GraphQL-subscriptions.
Waar moet u op letten?
Duizenden open verbindingen vragen om een server die veel gelijktijdige verbindingen efficiënt afhandelt, en load balancers en proxy's moeten zo zijn ingesteld dat ze WebSocket-verkeer doorlaten en verbindingen open houden. Clients hebben logica nodig om opnieuw te verbinden met oplopende wachttijd, en moeten na een herverbinding gemiste berichten inhalen. Authenticatie gebeurt meestal bij de handshake, bijvoorbeeld met een token. Zie onze WebSocket ontwikkeling en realtime dashboards.
Veelgestelde vragen over WebSockets
Is een WebSocket hetzelfde als HTTP?
Nee. Een WebSocket-verbinding begint als HTTP-verzoek, maar schakelt na de handshake over op een eigen protocol met een blijvende verbinding in twee richtingen.
Zijn WebSockets veilig?
Met wss:// wordt het verkeer versleuteld met TLS, net als bij HTTPS. De server moet gebruikers nog steeds authenticeren, de herkomst van verbindingen controleren en elk binnenkomend bericht valideren.
Hoeveel WebSocket-verbindingen kan een server aan?
Dat hangt af van de serversoftware en het aantal berichten. Goed gebouwde asynchrone servers verwerken tienduizenden open verbindingen per machine, en meer met horizontaal schalen.
Wanneer gebruikt u beter geen WebSockets?
Als updates zelden voorkomen, als de client alleen hoeft te luisteren (SSE is dan eenvoudiger), of voor meldingen tussen servers (daar passen webhooks beter).