Вопрос проверяет знание подходов к реализации клиент-серверной коммуникации в стиле long polling.
Long polling — это техника, при которой клиент делает запрос и сервер не отвечает сразу, а ждёт события. После ответа клиент делает новый запрос. Это позволяет эмулировать "реальное время" без постоянного опроса.
Что такое Long Polling:
Клиент отправляет запрос к серверу.
Сервер удерживает соединение до появления данных.
После ответа клиент сразу делает новый запрос.
Эффективнее, чем частый polling, но не так хорош, как WebSocket.
Пример (Python Flask):
from flask import Flask, request
import time
app = Flask(__name__)
@app.route('/poll')
def poll():
start = time.time()
while time.time() - start < 15:
if check_for_event(): # условие наступления события
return {"event": "new message"}
time.sleep(1)
return {}, 204 # No contentПлюсы:
Простая реализация.
Работает там, где WebSocket недоступны.
Минусы:
Постоянные запросы от клиента.
Задержки в обработке.
Более высокая нагрузка на сервер.
Вывод:
Long polling — временное решение для имитации real-time, если нельзя использовать WebSocket или Server-Sent Events.