Sobes.tech
Back to questions
Junior — Middle
66

Объясните принцип работы WebSocket и чем он отличается от стандартных HTTP-соединений.

Companies where asked
СБЕРСБЕР
TechCore

Answer from AI

sobes.tech AI

WebSocket — это протокол, который обеспечивает двунаправленное (full-duplex) постоянное соединение между клиентом и сервером поверх одного TCP-соединения. В отличие от стандартного HTTP, где клиент отправляет запрос, а сервер отвечает и соединение закрывается, WebSocket устанавливает постоянное соединение, позволяя обеим сторонам обмениваться данными в любое время без повторного установления соединения.

Принцип работы:

  1. Клиент отправляет HTTP-запрос с заголовком Upgrade: websocket для инициации WebSocket-соединения.
  2. Сервер подтверждает переход на WebSocket, и соединение переключается в двунаправленный режим.
  3. После установления соединения обе стороны могут отправлять сообщения в реальном времени.

Отличия от HTTP:

  • HTTP — это протокол запрос-ответ, WebSocket — постоянное соединение.
  • WebSocket снижает накладные расходы на установку соединения при частом обмене данными.
  • WebSocket подходит для приложений с реальным временем: чаты, игры, биржевые терминалы.

Пример на Python с использованием библиотеки websockets:

import asyncio
import websockets

async def echo(websocket, path):
    async for message in websocket:
        await websocket.send(f"Echo: {message}")

start_server = websockets.serve(echo, "localhost", 8765)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()