Geekflare wordt ondersteund door ons publiek. We kunnen affiliate commissies verdienen met het kopen van links op deze site.
In Ontwikkeling Laatst bijgewerkt: 23 september 2023
Deel op:
Invicti beveiligingsscanner voor webtoepassingen - de enige oplossing die automatische verificatie van kwetsbaarheden levert met Proof-Based Scanning™.

WebSocket is een tweerichtingscommunicatieprotocol dat gebruik maakt van een enkele TCP-verbinding om gegevens te verzenden/ontvangen.

Technisch gezien biedt WebSocket full-duplex communicatie tussen de server en de client, wat gegevensoverdracht in realtime mogelijk maakt. Om te beginnen is het vergelijkbaar met HTTP, maar met meer voordelen en een ander gebruik.

Netto zoals u http:// van https:// in de adresbalk van uw browser typt om verbinding te maken met een webpagina, gebruikt WebSocket een ander schema, namelijk ws: van wss:-hoe dan ook, u kunt het niet gebruiken in het adresveld van een browser.

Als u een gebruiker bent die interactie heeft met een app of service via een browser, kunt u het verschil niet zien en hoeft u dat ook niet te doen.

Maar het is nuttig om meer te weten over WebSocket als u een ontwikkelaar bent. Hier belicht ik enkele basisprincipes ervan, samen met aanbevolen WebSocket-servers die u kunt gebruiken.

WebSocket vs. HTTP

WebSocket-vs.-HTTP

Voordat u WebSocket gaat verkennen, is het van vitaal belang om de verschillen met HTTP te leren kennen.

Bidirectionele communicatieUnidirectionele communicatie
De server hoeft niet te wachten op een clientverzoek om gegevens te verzenden zodra de verbinding tot stand is gebracht.De server moet wachten tot de client gegevens aanvraagt, wat betekent dat er meerdere verbindingen moeten worden gemaakt.
Nuttig voor realtime webtoepassingen, chattoepassingen of games.Alles waarbij geen tweerichtingsverbindingen nodig zijn.
De verbinding eindigt alleen als de client of de server deze sluit.De verbinding sluit na elk verzoek of antwoord van de client/server.
Voorbeelden: Multiplayerspellen, Berichten-apps, BeursdatabaseVoorbeelden: Google zoeken, Sociale media en Browser meldingen.
WebSocket vs. HTTP

Hoe werkt een WebSocket-server?

Een WebSocket-server luistert naar een poort van een TCP-server.

De server houdt zich bezig met het maken van verbindingen. Om dat te bereiken, zijn hier de dingen die het doet:

  • Cliëntverzoeken interpreteren.
  • Een antwoord van de server naar de client terugsturen.
  • Klanten bijhouden.
  • De gemaskeerde gegevens (versleuteld) die door de klant zijn verzonden lezen en ontmaskeren.

U kunt de officiële documentatie van Mozilla doornemen om te begrijpen hoe u WebSocket-servers kunt maken/schrijven.

Hoe werkt een WebSocket Serververbinding?

Hoe werkt een web-socket-serververbinding

Nu u het WebSocket protocol en zijn server kent, hoe werkt het allemaal?

Om een WebSocket-verbinding te starten, is een HTTP-verbinding vereist.

HTTP start de magie, ook al is het niet de held in dit verhaal. In het algemeen kan al het technische jargon in drie stappen worden samengevat:

  • De client stuurt een HTTP-verbinding naar de server met de juiste headers die om een upgrade voor het protocol vragen.
  • Zodra dat binnen is, antwoordt de server dat hij overschakelt naar een WebSocket-protocol.
  • Vervolgens valideert de klant dat de verbinding is geüpgraded en maakt zich klaar om te beginnen met het verzenden van gegevens.

Als u meer wilt weten over hoe het werkt, het beveiligingsmodel, client/server vereisten en meer, bekijk dan het Internet Standards Track-document voor meer informatie.

Waarom hebben WebSockets de voorkeur voor realtime verbindingen?

WebSockets zijn ontstaan vanwege de beperkingen van HTTP.

HTTP-verbindingen zijn unidirectioneel, dat wil zeggen dat u moet wachten tot een verzoek is voltooid voordat u een ander verzoek kunt starten.

Er is een workaround voor dit genaamd langpoligemaar het maakt de HTTP-aanvraag met een lange time-out periode. De server gebruikt de lange time-out om te wachten en de gegevens te pushen zonder een nieuwe HTTP-aanvraag.

Dit legt echter beslag op de systeembronnen, zelfs wanneer er geen gegevensoverdracht plaatsvindt.

Real-time verbindingen kunnen zich de wachttijd niet veroorloven. De gegevens moeten continu van de server komen om aan de eisen van de cliënt te voldoen.

WebSockets bieden een full-duplex verbinding die in leven blijft totdat de server/client de verbinding verbreekt.

U krijgt dus betrouwbaarheid en communicatie in twee richtingen, waardoor u realtime toepassingen kunt bouwen.

Als u dezelfde voordelen wilt voor het bouwen van uw toepassingen, dan zijn hier enkele uitstekende WebSocker serveropties:

Soketi

contactdoosi

Soketi is een eenvoudige, gratis, open-source oplossing waarmee u zich kunt richten op de serverarchitectuur. Het is bedoeld als een snelle WebSocket-server die compatibel is met Pusherterwijl het ingebouwd app-beheer biedt.

Het biedt ook een serverloos WebSocket-aanbod dat kan worden ingezet op Cloudflare werknemers. Toen ik dit schreef, bevond het zich in de open bètafase.

Als u een WebSocket-server met maximale aanpassing op uw server wilt implementeren, dan is Soketi een goede keuze.

Helaas biedt het geen on-premise of beheerde oplossing.

Socket.io

socket-io

Socket.IO is weer een ander open-source project dat een low-overhead communicatiekanaal biedt tussen de server en de client.

Het ondersteunt het terugvallen op HTTP long-polling als de verbinding wordt verbroken en zal proberen automatisch opnieuw verbinding te maken.

Bovendien is het compatibel met Deno, een moderne runtime voor JavaScript en TypeScript gebouwd in Rust.

Een ongelooflijk populaire WebSocket-server die u gratis op uw server kunt gebruiken. U kunt de officiële documentatie volgen voor meer informatie, aangezien het geen on-premise implementatiedienst biedt.

Pie Socket

piesocket

Als u op zoek bent naar een WebSocket-oplossing voor uw onderneming of bedrijf en het niet erg vindt om te betalen, dan is Pie Socket een uitstekende optie.

Pie Socket is een premium aanbod, met bedrijven zoals RedHat en Akamai die sommige diensten gebruiken.

Het biedt ook WebSocket API voor mobiele, desktop en IoT-apparaten. U kunt de serverregio van uw voorkeur kiezen, blockchainondersteuning krijgen en klantenondersteuning prioriteit geven om uw bedrijf te helpen.

Pie Socket biedt een 14-daagse proefversie (zonder creditcard) zodat u het kunt uitproberen.

SocketCluster

socket-cluster

Socket Cluster is een interessante toolkit die ook op Kubernetes kan worden ingezet.

Het ondersteunt JWT-authenticatielaat u datastromen monitoren en throttlen, en helpt geheugenlekken voorkomen. SocketCluster vermeldt ook dat de berichtenvolgorde niet wordt verstoord en gemakkelijk kan worden uitgerold en geschaald.

ws

ws is een Node.js WebSocket-bibliotheek die eenvoudig te gebruiken is en een snelle client/server-implementatie heeft.

Het is een ongelooflijk populaire WebSocket client en server voor Node.js toepassingen die veel functies ondersteunen. Weer een ander gratis en open-source project dat u naar wens kunt gebruiken.

Cowboy

cowboy-websocket

Cowboy is een eenvoudige, snelle HTTP-server met ondersteuning voor WebSocket, gebouwd met Erlang-code.

Alleen al omdat het Erlang gebruikt, is het inherent waardevol voor het bouwen van real-time toepassingen die een hoge beschikbaarheid vereisen. U kunt het bijvoorbeeld proberen te gebruiken voor bank- en e-commercesystemen.

Sokje

sokette

Sokje is een lichtgewicht wrapper rond WebSocket waarmee u automatisch opnieuw verbinding kunt maken als de verbinding verbroken wordt.

Helaas wordt het project niet meer actief onderhouden. U kunt het echter wel uitproberen voor uw use case.

Websocketd

websocketd

Websocketd is een opdrachtregelprogramma dat u helpt om een bestaand opdrachtregelprogramma te omwikkelen en het toegang te geven via een WebSocket.

Het zou handig moeten zijn om gemakkelijk WebSocket-geschikte toepassingen te bouwen.

Net als het vorige project wordt het niet langer actief ontwikkeld. U kunt het echter uitproberen voor uw use cases. Bekijk de GitHub-pagina voor meer informatie.

NetCoreServer

Zoals de naam al doet vermoeden, is NetCoreServer een .NET Core-bibliotheek (gebouwd met C#) die HTTP(S), WebSocket en meer verbindingsprotocollen ondersteunt.

Het ondersteunt ook integratie van berichtenprotocollen met Fast Binary Encoding, wat ervoor zorgt dat de asynchrone socket-server ultrasnel is en een lage latentie heeft.

U kunt de GitHub-pagina en documentatie bekijken voor meer informatie.

Een server voor het afhandelen van WebSocket-verbindingen is een must

Hoewel u elke WebSocket-server kunt kiezen en inzetten volgens uw vereisten, maakt de meeste gebruik van een reverse proxy-mechanisme om de belasting op de server te minimaliseren en deze zo verantwoordelijk mogelijk te houden.

Miljoenen gebruikers communiceren met services die het WebSocket-protocol gebruiken. Van chattoepassingen tot multiplayergames, zonder een WebSocket-server zouden we ernstige problemen hebben met het snel communiceren en verkrijgen van informatie.

Dit gezegd hebbende, moet u alleen de beste WebSocket-server kiezen die aan uw eisen voldoet. Het is van vitaal belang om te proberen het zelf te beheren als u totale controle en onbeperkte schaalbaarheid wilt tegen een fractie van de kosten.

Kies degene die de maximale betrouwbaarheid biedt die uw project verdient.

  • Ankush Das
    Auteur
    Een afgestudeerde computerwetenschapper met een passie om verschillende technologieën te onderzoeken en erover te schrijven. Als hij niet aan het schrijven is, zijn het meestal zijn katten die hem bezig houden.
Met dank aan onze sponsors
Meer geweldige lezingen over ontwikkeling
Energie voor uw bedrijf
Enkele van de tools en services om je bedrijf te helpen groeien.
  • Invicti maakt gebruik van Proof-Based Scanning™ om de geïdentificeerde kwetsbaarheden automatisch te verifiëren en binnen enkele uren bruikbare resultaten te genereren.
    Probeer Invicti
  • Web scraping, residentiële proxy, proxy manager, web unlocker, zoekmachine crawler en alles wat je nodig hebt om webgegevens te verzamelen.
    Probeer Brightdata
  • Monday.com is een alles-in-één werk OS om je te helpen bij het beheren van projecten, taken, werk, verkoop, CRM, operaties, workflows en meer.
    Probeer maandag
  • Intruder is een online kwetsbaarhedenscanner die zwakke plekken in de cyberbeveiliging van uw infrastructuur vindt om kostbare datalekken te voorkomen.
    Probeer indringer