Назад к вопросам
Junior
87
questionbank
Что такое WebSocket?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
WebSocket — это протокол двусторонней, полнодуплексной связи поверх одного соединения TCP. Он обеспечивает постоянное соединение между клиентом и сервером, позволяя им обмениваться данными в реальном времени без необходимости повторного запроса.
Ключевые особенности:
- Низкая задержка: Мгновенная передача данных.
- Эффективность: Меньший накладной расход по сравнению с HTTP-трафиком Polling или Long Polling.
- Двусторонняя связь: Сервер может инициировать отправку данных клиенту.
Применяется в:
- Чатах
- Онлайн-играх
- Торговых платформах
- Уведомлениях в реальном времени
- Стриминге данных
Пример простого WebSocket-сервера на Python с использованием библиотеки websockets:
import asyncio
import websockets
async def echo(websocket, path):
async for message in websocket:
print(f"Получено сообщение: {message}")
await websocket.send(f"Эхо: {message}")
start_server = websockets.serve(echo, "localhost", 8765)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
Отличие от HTTP:
| Признак | HTTP | WebSocket |
|---|---|---|
| Соединение | Кратковременное (по запросу) | Постоянное, двустороннее |
| Обмен данными | Клиент запрашивает, сервер отвечает | Двусторонний, в любое время |
| Задержка | Высокая (при Polling) | Низкая |
| Накладные расходы | Выше (для частых запросов) | Ниже |
| Примеры | Загрузка веб-страницы, API | Чаты, realtime обновления |