Отправка и получение сообщений через WebSocket in Python

WebSocket связь позволяет отправлять и получать сообщения в реальном времени между сервером и клиентами. Вот подробное руководство о том, как добиться этого при Python использовании websockets библиотеки.

Шаг 1: Установите WebSocket библиотеку

Сначала установите websockets библиотеку, выполнив следующую команду в папке terminal:

pip install websockets

Шаг 2: Отправка и получение сообщений на сервере

Ниже приведен пример отправки и получения сообщений на 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()  

Во фрагменте кода:

  • async def handle_connection(websocket, path):: эта функция обрабатывает WebSocket соединения. Когда клиент отправляет сообщение, эта функция слушает и отправляет ответ.

  • async for message in websocket:: этот цикл прослушивает сообщения от клиента через соединение WebSocket.

  • await websocket.send(f"Server received: {message}"): Эта функция отправляет ответ от сервера обратно клиенту через соединение WebSocket.

Шаг 3: Отправка и получение сообщений от клиента

Вот пример того, как клиент отправляет и получает сообщения от 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())  

Во фрагменте кода:

  • async with websockets.connect("ws://localhost:8765") as websocket:: так клиент подключается к WebSocket серверу. Клиент устанавливает соединение с localhost адресом и портом 8765.

  • await websocket.send("Hello, WebSocket!"): клиент отправляет сообщение  на сервер. Hello, WebSocket!

  • response = await websocket.recv(): клиент ожидает получения ответа от сервера через соединение WebSocket.

Заключение

Следуя шагам и понимая каждую часть примера, вы успешно научились отправлять и получать сообщения через WebSocket in Python. Это открывает возможности для создания приложений реального времени и непрерывного обмена данными между сервером и клиентами.