Odesílání a přijímání zpráv přes WebSocket in Python

WebSocket komunikace umožňuje odesílat a přijímat zprávy v reálném čase mezi serverem a klienty. Zde je podrobný návod, jak toho dosáhnout pomocí Python knihovny websockets.

Krok 1: Nainstalujte WebSocket knihovnu

Nejprve nainstalujte websockets knihovnu spuštěním následujícího příkazu v terminal:

pip install websockets

Krok 2: Odesílání a přijímání zpráv na serveru

Níže je uveden příklad, jak odesílat a přijímat zprávy na WebSocket serveru:

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()  

Ve fragmentu kódu:

  • async def handle_connection(websocket, path):: Tato funkce zpracovává WebSocket připojení. Když klient odešle zprávu, tato funkce naslouchá a odešle odpověď zpět.

  • async for message in websocket:: Tato smyčka naslouchá zprávám od klienta prostřednictvím WebSocket připojení.

  • await websocket.send(f"Server received: {message}"): Tato funkce odešle odpověď ze serveru zpět klientovi prostřednictvím WebSocket připojení.

Krok 3: Odesílání a přijímání zpráv od klienta

Zde je příklad toho, jak klient odesílá a přijímá zprávy ze WebSocket serveru:

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())  

Ve fragmentu kódu:

  • async with websockets.connect("ws://localhost:8765") as websocket:: Takto se klient připojuje k WebSocket serveru. Klient naváže spojení s localhost adresou a portem 8765.

  • await websocket.send("Hello, WebSocket!"): Klient odešle zprávu  na server. Hello, WebSocket!

  • response = await websocket.recv(): Klient čeká na přijetí odpovědi ze serveru prostřednictvím WebSocket připojení.

Závěr

Tím, že budete postupovat podle kroků a porozumět každé části příkladu, jste se úspěšně naučili odesílat a přijímat zprávy prostřednictvím WebSocket v Python. To otevírá možnosti pro vytváření aplikací v reálném čase a nepřetržitou výměnu dat mezi serverem a klienty.