Ответ
Протокол 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
).