Html 5 Websockets header image

Html 5 Websockets

woensdag 19 september 2018 ·Leestijd: 2 minuten
contacteer auteur:

Het web is vooral gebouwd rondom zogeheten http requests en responses. De client stuurt een request naar de server en de server stuurt weer een response terug. Met het introduceren van Ajax calls werd dit concept al wat dynamischer, maar nog steeds hing het proces voornamelijk af van een client die data naar de server stuurt. De server kan deze interactie nooit starten.

Nu bestaat er al een tijdje het concept van Long Polling, wat lijkt op een langdurige connectie met de server. Maar wat er eigenlijk gebeurd is dat de client een http request verstuurd naar de server met een vraag om nieuwe informatie. Als de server geen nieuwe informatie beschikbaar heeft, zal deze niet een lege response terugsturen, zoals bij een normale request/response, maar de server houdt de verbinding open totdat er wel nieuwe informatie beschikbaar is. Hierdoor lijkt het net of er een direct connectie is met de server en dat de server de connectie initieert.

Maar dit is niet optimaal. Long polling kost veel CPU, geheugen en bandwith. Daarnaast is er het probleem met schaalbaarheid. Als er maar enkele requests van de client binnenkomen die de server open moet houden dan gaat dit prima. Zodra de applicatie gaat groeien en dit er duizenden per uur worden dan gaat Long Polling wel voor problemen zorgen. Wat kan er nu wel voor zorgen dat er interactieve communicatie mogelijk is tussen client en server?

In 2010 werd er een nieuwe technologie geïntroduceerd: de Websockets. Een websocket is een interactieve verbinding tussen de client en de server waarbinnen beide partijen een request kan versturen en dit niet alleen maar bij de client ligt. Een websocket wordt geïnitieerd door een http request te upgraden naar een websocket met een zogeheten handshake. Hierdoor wordt de connectie omgezet naar een websocket. Hieronder een voorbeeld van een handshake request van de client en het bijbehorende antwoord van de server.

Als je websockets gaat gebruiken zijn er wel een aantal punten waar je op moet letten. De eerste is proxys, hier is wat extra aandacht nodig. Dit heeft te maken met het feit dat een websocket request geen headers bevat. De proxy probeert de header van het websocket request te lezen, kan dit niet en blokkeert dan het request. Er is wel een oplossing voor dit probleem, het gebruik van TLS/SSL. Hierdoor kan de proxy de headers van het reqeust niet lezen aangezien ze encrypted zouden zijn en laat de proxy het request wel door.

Daarnaast moet je rekening houden met het feit dat door een fout binnen de client of de server de connectie toch verloren kan gaan. Hierdoor moet er logica worde ingebouwd die hier rekening mee houdt en de websocket opnieuw opstart.

Als laatste moet er rekening gehouden worden met browser support, het kan zijn dat wat oudere browsers geen ondersteuning bieden voor websockets. Hier moet dan een fallback strategie worden gekozen, zoals het gebruik van long polling.


Andere blogartikelen

Integraties met API's van verschillende partijen
Geschreven door
op donderdag 30 juni 2022
Bij Sigma Solutions maken wij integraties met verschillende partijen, die ervoor zorgen dat jouw bedrijfsproces geautomatiseerd en gedigitaliseerd kan worden. We zijn constant op zoek naar passende oplossingen voor onze klanten.
Wat is B2B Online Advertising?
Geschreven door
op donderdag 30 juni 2022
B2B Online Advertising is een marketingstrategie die bedoeld is om een zakelijke boodschap over te brengen aan andere bedrijven door middel van advertenties.
Als traditioneel bedrijf succesvol blijven in een tijdperk van digitalisering
Geschreven door
op donderdag 30 juni 2022
Wil je als traditioneel bedrijf succesvol blijven in een tijdperk van 'digital natives'? Lees dan deze blogpost!
Open Nieuwsbrief Inschrijving Footer

E-book

Zo wordt uw website een lead generator 
In 3 stappen uw website van visitekaartje naar salesfunnel

Download het E-book ›