Назад к вопросам
Junior
71
questionbank

Как открыть соединение WebSocket?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Для открытия WebSocket-соединения на стороне клиента в Python можно использовать библиотеку websockets.

import asyncio
import websockets

async def connect_websocket():
    uri = "ws://localhost:8765"  # Адрес WebSocket-сервера
    async with websockets.connect(uri) as websocket:
        print("WebSocket connection opened.")
        # Здесь можно отправлять и получать сообщения

if __name__ == "__main__":
    asyncio.run(connect_websocket())

На стороне сервера, также с использованием websockets:

import asyncio
import websockets

async def handle_client(websocket, path):
    print(f"Client connected from {websocket.remote_address}")
    # Здесь можно обрабатывать сообщения от клиента

async def start_server():
    start_server = websockets.serve(handle_client, "localhost", 8765)
    print("WebSocket server started on ws://localhost:8765")
    await start_server.serve_forever()

if __name__ == "__main__":
    asyncio.run(start_server())

Основные шаги:

  1. Импорт библиотеки: import websockets.
  2. Определение адреса: Указывается URI WebSocket-сервера (ws://... или wss://...).
  3. Создание соединения: Используется websockets.connect() на клиенте или websockets.serve() на сервере. Они являются асинхронными функциями и обычно используются с async with для автоматического закрытия соединения.
  4. Обработка событий: После установки соединения, можно отправлять и получать сообщения асинхронно.

Альтернативы:

  • websocket-client: Клиентская библиотека, не основанная на asyncio.
  • autobahn|python: Более старая библиотека, поддерживающая как клиентскую, так и серверную часть.

Выбор библиотеки зависит от конкретных требований проекта (асинхронность, функциональность, производительность). Для современных асинхронных приложений рекомендован websockets.