Wysyłanie i odbieranie wiadomości przez WebSocket in Python

WebSocket Komunikacja umożliwia wysyłanie i odbieranie wiadomości w czasie rzeczywistym między serwerem a klientami. Oto szczegółowy przewodnik, jak to osiągnąć podczas Python korzystania z websockets biblioteki.

Krok 1: Zainstaluj WebSocket bibliotekę

Najpierw zainstaluj websockets bibliotekę, uruchamiając następujące polecenie w terminal:

pip install websockets

Krok 2: Wysyłanie i odbieranie wiadomości na serwerze

Poniżej znajduje się przykład wysyłania i odbierania wiadomości na WebSocket serwerze:

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

We fragmencie kodu:

  • async def handle_connection(websocket, path):: Ta funkcja obsługuje WebSocket połączenia. Gdy klient wysyła wiadomość, ta funkcja nasłuchuje i odsyła odpowiedź.

  • async for message in websocket:: Ta pętla nasłuchuje komunikatów od klienta przez WebSocket połączenie.

  • await websocket.send(f"Server received: {message}"): Ta funkcja wysyła odpowiedź z serwera z powrotem do klienta za pośrednictwem WebSocket połączenia.

Krok 3: Wysyłanie i odbieranie wiadomości od Klienta

Oto przykład tego, jak klient wysyła i odbiera wiadomości z WebSocket serwera:

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

We fragmencie kodu:

  • async with websockets.connect("ws://localhost:8765") as websocket:: W ten sposób klient łączy się z WebSocket serwerem. Klient nawiązuje połączenie z localhost adresem i portem 8765.

  • await websocket.send("Hello, WebSocket!"): Klient wysyła wiadomość  do serwera. Hello, WebSocket!

  • response = await websocket.recv(): Klient czeka na odpowiedź z serwera za pośrednictwem WebSocket połączenia.

Wniosek

Wykonując kroki i rozumiejąc każdą część przykładu, z powodzeniem nauczyłeś się, jak wysyłać i odbierać wiadomości za pośrednictwem WebSocket w Python. Otwiera to możliwości tworzenia aplikacji czasu rzeczywistego i ciągłej wymiany danych pomiędzy serwerem a klientami.