Invio e ricezione di messaggi tramite WebSocket in Python

WebSocket la comunicazione consente di inviare e ricevere messaggi in tempo reale tra un server e client. Ecco una guida dettagliata su come raggiungere questo obiettivo utilizzando Python la websockets libreria.

Passaggio 1: installare la WebSocket libreria

Innanzitutto, installa la websockets libreria eseguendo il seguente comando in terminal:

pip install websockets

Passaggio 2: invio e ricezione di messaggi sul server

Di seguito è riportato un esempio di come inviare e ricevere messaggi su un WebSocket server:

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

Nello snippet di codice:

  • async def handle_connection(websocket, path):: Questa funzione gestisce WebSocket le connessioni. Quando un client invia un messaggio, questa funzione ascolta e invia una risposta.

  • async for message in websocket:: questo ciclo ascolta i messaggi dal client attraverso la WebSocket connessione.

  • await websocket.send(f"Server received: {message}"): Questa funzione invia una risposta dal server al client tramite la WebSocket connessione.

Passaggio 3: invio e ricezione di messaggi dal client

Ecco un esempio di come il client invia e riceve messaggi dal WebSocket server:

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

Nello snippet di codice:

  • async with websockets.connect("ws://localhost:8765") as websocket:: Questo è il modo in cui il client si connette al WebSocket server. Il client stabilisce una connessione all'indirizzo localhost e alla porta 8765.

  • await websocket.send("Hello, WebSocket!"): Il client invia il messaggio  al server. Hello, WebSocket!

  • response = await websocket.recv(): Il client attende di ricevere una risposta dal server tramite la WebSocket connessione.

Conclusione

Seguendo i passaggi e comprendendo ogni parte dell'esempio, hai imparato con successo come inviare e ricevere messaggi tramite WebSocket in Python. Ciò apre possibilità per la creazione di applicazioni in tempo reale e lo scambio continuo di dati tra server e client.