Hvordan implementere en websocket i Python

Hvordan implementere en websocket i Python

Websocket er en applikasjonslagsprotokoll som tillater toveis kommunikasjon mellom en klient og en server. Websocket Protocol fungerer først ved å lage et håndtrykk og deretter en melding som innrammes implementert over TCP i stedet for grunnleggende HTTP.

Websockets og andre lignende teknologier som SSE (server-sente hendelser) og WebRTC er nyttige i applikasjoner der serveren trenger å holde en åpen forbindelse til de tilkoblede klientene. Et utmerket eksempel på websockets brukt i applikasjoner er en chat-applikasjon, online multiplayer-spill og sanntidsverktøy som analyse og samarbeidsverktøy.

Websockets Gir oss en full-dupleks, toveis forbindelse mellom serveren og de tilkoblede klientene over nettet. Det betyr at både serveren og klienten kan skyve data når det er en etablert forbindelse.

I denne opplæringen vil jeg ikke dykke dypt inn i hvordan Websockets arbeid. I stedet vil jeg vise deg hvordan du kan bruke Python til å implementere en enkel applikasjon ved hjelp av WebSocket.

Hvis du ønsker å lære mer om HTTP, WebSocket og SSES, Sjekk ut de andre opplæringsprogrammene på dette nettstedet som forklarer forskjellene deres.

MERK: Før vi begynner, antar vi at du er kjent med grunnleggende nettverkskonsepter som HTTP og HTTP -forespørsler. For å implementere konseptene i denne opplæringen med en grad av letthet, må du ha grunnleggende Python og JavaScript -programmeringskunnskap.

Trinn 1: Miljøoppsett

La oss begynne å implementere en enkel websocket -server for å bruke nettleseren som klient for å koble til serveren.

Det er godt å merke seg at formålet med denne implementeringen ikke er å bygge en massiv applikasjon, men å gi deg en grunnleggende forståelse av hvordan du kan bruke Python og JavaScript for å lage websocket -applikasjoner.

For dette må vi ha Python installert, helst Python 3.6+.

Vi vil også bruke Websocket pakke.

https: // websockets.LEDTHEDOCS.io/en/stabil/indeks.html

Når du har installert Python, bruk PIP til å installere WebSocket -pakken ved å bruke kommandoen nedenfor:

Pip installer websockets

Når du har Websockets pakke installert, vi kan begynne å opprette serveren og en klient for å koble til.

Trinn 2: Opprette serveren

Begynn med å lage en katalog der vi skal servere applikasjonen den Websocket.

Inne i katalogen, oppretter en fil og ring den serveren.py

Inne i serveren.py -fil, legg til følgende kodelinjer som implementerer en enkel server på / url.

Importer asyncio
Importer websockets
# Opprett handler for hver tilkobling
Async def Handler (WebSocket, Path):
data = venter på websocket.recv ()
Svar = f "Data mottatt som: data!""
venter på websocket.Send (svar)
start_server = websockets.server (handler, "localhost", 8000)
asyncio.get_event_loop ().run_until_complete (start_server)
asyncio.get_event_loop ().run_forever ()

Inne i serverfilen importerer vi de nødvendige pakkene i dette tilfellet, asyncio, og Websockets.

Deretter lager vi en behandler som tar argumentene Websocket og sti. De Websocket representerer nettadressen til serveren (localhost: 8000). Stien er URI for behandleren i vår sak, URI er /.

Vi fortsetter deretter med å vente på den innkommende tilkoblingen og meldingen. Med mottatt data implementerer vi en handling. I vårt tilfelle en enkel respons med innholdet i mottatte data.

Trinn 3: Opprette en klient

La oss nå prøve å implementere en enkel klient for å koble til serveren. Vi vil bruke nettleserkonsollen som klient for å bevare opplæringsens enkelhet.

Opprett en fil og ring den klienten.html. Inne i filen, legg til følgende kode:







Websocker -klient





Lagre filen og åpne den i nettleseren.

For å teste om tilkoblingen fungerer, klikker du på knappen og sjekk konsollen for serverresponsen.

Når du har klikket på knappen, sendes en melding til serveren. Serveren svarer deretter med innholdet i meldingen, og indikerer dermed at tilkoblingen er etablert.

Konklusjon

For denne opplæringen så vi hvordan vi skulle bruke Python WebSockets pakke for å implementere en enkel Websocket forbindelse.