На каком протоколе основан WebSocket и какие схемы URL он использует

Ответ

Протокол WebSocket инициирует соединение через стандартный HTTP/HTTPS handshake, после чего "повышает" его до полноценного двунаправленного протокола, работающего поверх TCP.

Для соединений используются две основные схемы URL:

  • ws:// (WebSocket): Незашифрованное соединение. Аналогично http://.
  • wss:// (WebSocket Secure): Зашифрованное соединение с использованием TLS (Transport Layer Security). Аналогично https:// и является стандартом для production-окружений.

Ключевое отличие от HTTP — после установки соединения канал остается открытым, позволяя серверу и клиенту обмениваться сообщениями в любое время без необходимости повторных запросов.

Пример подключения на Python с библиотекой websockets:

import asyncio
import websockets

async def connect_to_websocket():
    # Используем защищенную схему wss://
    uri = "wss://echo.websocket.events/"
    async with websockets.connect(uri) as websocket:
        await websocket.send("Hello, WebSocket!")
        response = await websocket.recv()
        print(f"Получен ответ: {response}")

asyncio.run(connect_to_websocket())

Кроме того, WebSocket поддерживает согласование подпротоколов (subprotocols), которые определяют формат сообщений поверх основного соединения (например, json, graphql-ws).