...
Bij SSE stuurt de client een request naar een server. De server opent dan een connectie tussen de twee. De server stuurt niks terug tot het moment dat deze nieuwe data krijgt. Op het moment dat deze nieuwe data krijgt stuurt hij deze naar de client. De connectie wordt echter niet gesloten en blijft dus bestaan. Dit zorgt ervoor dat de client niet opnieuw een request hoeft te sturen, maar gewoon kan wachten op de nieuwe data van de server.
Figuur 4 (Veen, 2012)
...
WebSocket
Een websocket WebSocket lijkt veel op SSE. Een websocket WebSocket is te vergelijken met bijvoorbeeld WhatsApp. Bij SSE wordt er een connectie geopend en kan de server ten alle tijde data sturen naar de client. Bij een websocket WebSocket kan dit ook, echter kan ook de client nieuwe data sturen naar de server, wat niet mogelijk is bij SSE.
...
Long polling is een soort van opvolger en in dit geval een betere opvolger van polling. Long polling begint op dezelfde manier. Er wordt een request gestuurd naar de server vanaf de client. Hier is ook gelijk al te zien wat er beter is aan long polling ten opzichte van 'gewoon' polling. Bij polling wordt er een response gestuurd. Deze response is zo snel mogelijk, dus of met data, of er is geen nieuwe data. Long polling wacht tot er nieuwe data is. Is er nog geen data, dan ook geen response. Is er wel nieuwe data, dan krijg je ook de response. Zo snel als de response binnenkomt wordt er ook weer een nieuwe request gestuurd ,zodat de mogelijk nieuwe data weer zo snel mogelijk binnenkomt. Bij long polling is het echter wel zo dat een server of client soms denkt dat de connection te lang open heeft gestaan en dat deze connection na een tijd gesloten wordt. Het gebruikt meer resources dan een websocketWebSocket. Ook kan het zijn dat er meerdere poll requests open staan naar een server en de volgorde van de berichten niet klopt.
Server-sent events
...
WebSockets
Server-sent events en websockets WebSockets lijken veel op elkaar, ook is er in dit geval één kopje voor de twee samen. Een aantal verschillen tussen de twee, is dat SSE over HTTP gebruikt kan worden, terwijl websockets WebSockets hun eigen protocol hebben. Een groot verschil tussen deze data transfer technieken, is wie requests en responses kan sturen. Bij SSE wordt er één keer een request gestuurd naar de server. Deze request is een aanvraag om te verbinden. Daarna kan alleen de server berichten terug sturen. De client kan geen berichten naar de server sturen. Dit is ook waar SSE voor gemaakt is. Websockets WebSockets die wel berichten kunnen sturen naar de server als er eenmaal een connectie is geopend zijn overbodig. Daarnaast zijn er andere voor- en nadelen te benoemen, zoals dat SSE maar een maximum aantal van open connecties mag hebben. Een makkelijke oplossing voor dit probleem is het gebruik van meerdere host names. In plaats van www.example.com kan je ook www1.example.com en www2.example.com gebruiken.
...
'Welke techniek kunnen wij gebruiken om real-time data weer te geven op een website?' Is onze mijn hoofdvraag. Tijdens dit onderzoek hebben we heb ik verschillende deelvragen beantwoord om op deze vraag een antwoord weten te bedenken. Hieronder een samenvatting van onze mijn bevindingen en de uiteindelijke techniek die we wij willen gaan gebruiken.
Als we los kijken naar alle systemen, dan zijn er twee die uitspringen. Dit zijn de server-side events en websocketsWebSockets. Deze twee bijna identieke technieken zijn de technieken die ons mij het beste best lijken. Een websocket WebSocket en een server-side event service zijn de twee keuzes die het meest real time data weergeven, zonder dat deze technieken extra middelen gebruiken
Omdat er gebruik wordt gemaakt van een message broker, is onze mijn oplossing niet afhankelijk van de rest van de andere systemen. We Wij zouden met een websocket WebSocket de data van de broker kunnen 'consumeren'. De broker krijgt de data van de Raspberry Pi en zal deze distribueren naar verschillende consumers, in dit geval de websocket WebSocket en database. De websocket WebSocket zou in dit geval de data in de juiste vorm kunnen gieten voor de website. Dit zou ervoor zorgen dat de data die op de website binnenkomt gelijk kan worden omgezet naar de visuele weergaves. Omdat de broker ook gelijk de data naar de database stuurt, kunnen we later deze gebruiken om de data te tonen van vorige races. Het kan zo zijn dat als we vanuit de database een berekening willen maken, er een gebruiker wordt aangemaakt op de website. Het is mogelijk dat dit ook weer via de broker moet (omdat het niet naar de database moet maar ook naar een andere harde schijf die ergens ligt). Om deze reden kiezen wij er bewust voor om een websocket WebSocket te gaan gebruiken in combinatie met een message broker en niet een server-side events service.
...
Kilbride-Singh, K. (2022, 17 oktober). WebSockets vs Long Polling. Ably. https://ably.com/blog/websocketsWebSockets-vs-long-polling
Pure Storage. (2021, 20 december). How Formula 1 Car Sensors Create Data at Every Turn. https://blog.purestorage.com/perspectives/how-formula-1-car-sensors-create-data-at-every-turn/
Veen, T. [Tieme] Van. (2012, 12 oktober). What are Long-Polling, WebsocketsWebSockets, Server-Sent Events (SSE) and Comet? Stack Overflow. https://stackoverflow.com/questions/11077857/what-are-long-polling-websocketsWebSockets-server-sent-events-sse-and-comet