Pranešimų siuntimas ir gavimas per WebSocket in Python

WebSocket ryšys leidžia siųsti ir gauti pranešimus realiuoju laiku tarp serverio ir klientų. Čia yra išsamus vadovas, kaip tai pasiekti naudojant Python biblioteką websockets.

1 veiksmas: įdiekite WebSocket biblioteką

Pirmiausia įdiekite websockets biblioteką vykdydami šią komandą terminal:

pip install websockets

2 veiksmas: pranešimų siuntimas ir gavimas serveryje

Žemiau pateikiamas pavyzdys, kaip siųsti ir gauti pranešimus serveryje WebSocket:

import asyncio  
import websockets  
  
# WebSocket connection handling function  
async def handle_connection(websocket, path):  
    async for message in websocket:  
        await websocket.send(f"Server received: {message}")  
  
# Initialize the WebSocket server  
start_server = websockets.serve(handle_connection, "localhost", 8765)  
  
# Run the server within the event loop  
asyncio.get_event_loop().run_until_complete(start_server)  
asyncio.get_event_loop().run_forever()  

Kodo fragmente:

  • async def handle_connection(websocket, path):: Ši funkcija tvarko WebSocket ryšius. Kai klientas siunčia pranešimą, ši funkcija išklauso ir siunčia atsakymą atgal.

  • async for message in websocket:: ši kilpa klausosi pranešimų iš kliento per WebSocket ryšį.

  • await websocket.send(f"Server received: {message}"): Ši funkcija siunčia atsakymą iš serverio atgal klientui per WebSocket ryšį.

3 veiksmas: Kliento pranešimų siuntimas ir gavimas

Štai pavyzdys, kaip klientas siunčia ir gauna pranešimus iš serverio WebSocket:

import asyncio  
import websockets  
  
async def send_and_receive():  
    async with websockets.connect("ws://localhost:8765") as websocket:  
        await websocket.send("Hello, WebSocket!")  
        response = await websocket.recv()  
        print("Received:", response)  
  
asyncio.get_event_loop().run_until_complete(send_and_receive())  

Kodo fragmente:

  • async with websockets.connect("ws://localhost:8765") as websocket:: Taip klientas prisijungia prie serverio WebSocket. Klientas užmezga ryšį su localhost adresu ir prievadu 8765.

  • await websocket.send("Hello, WebSocket!"): klientas siunčia pranešimą  serveriui. Hello, WebSocket!

  • response = await websocket.recv(): klientas laukia atsakymo iš serverio per WebSocket ryšį.

Išvada

Vykdydami veiksmus ir suprasdami kiekvieną pavyzdžio dalį sėkmingai išmokote siųsti ir gauti pranešimus WebSocket naudodami Python. Tai atveria galimybes kurti programas realiuoju laiku ir nuolat keistis duomenimis tarp serverio ir klientų.