Een WebSocket is een verbinding die openblijft tussen een browser en een server, waardoor beide kanten berichten kunnen sturen wanneer ze willen. Gewoon webverkeer werkt als een brief versturen: je vraagt iets, je wacht, je krijgt één antwoord en de lijn sluit. Een WebSocket lijkt meer op een telefoongesprek dat verbonden blijft, zodat beide partijen kunnen praten zodra er iets te zeggen is.
Het bekendste voorbeeld is een chat-app. Als een vriend een bericht typt, zie je het meteen verschijnen, zonder verversen en zonder wachten. De server duwt dat bericht door de open verbinding op het moment dat het binnenkomt. Hetzelfde idee zit achter live sportscores, gedeelde documenten waarin je elkaars cursor ziet, en dashboards die zichzelf bijwerken. Anders dan bij een gewoon HTTP-verzoek sluit de lijn niet na één antwoord.
WebSockets werken vaak samen met een gewone API voor de rest van de app. De API regelt het normale laden en opslaan, terwijl de WebSocket het snelle, tweerichtingsverkeer draagt dat direct moet aanvoelen.
Die altijd-aan-verbinding kost wel iets. Elke open WebSocket houdt een stukje servergeheugen bezet, dus een drukke app heeft een server nodig die duizenden verbindingen tegelijk levend houdt. Ze kunnen ook wegvallen als een telefoon van wifi naar mobiele data wisselt, dus goede code verbindt stilletjes opnieuw en stuurt het gemiste alsnog na. Voor updates die maar af en toe komen, is gewone polling simpeler en vaak goedkoper dan een socket voor niets openhouden.
Bij TopDevs grijpen we naar WebSockets als een product echt live updates nodig heeft, en houden we het bij eenvoudiger methodes als dat niet zo is, zodat je niet betaalt voor open verbindingen die je nooit gebruikt.