Как правильно реализовать проверку на наличие новых сообщений?

Всем доброго времени суток! В качестве проекта для портфолио решил написать небольшой чат. Для фронта использую React, для бэка - Django. Сейчас возникает вопрос как правильно реализовать проверку на наличие новых сообщений. Клиент должен постоянно "тыкать" сервер с вопросом есть ли новые сообщения? В моменте думал над тем что бы делать запросы с максимально большим таймаутом и что бы сервер отвечал на них только когда появится новое сообщение, но тогда нужно выдумывать какую то асинхронность, как я понял её нет "из коробки", да и в целом звучит это как костыль.
В общем вопрос состоит в том как правильно реализовать проверку на наличие сообщений? И если вариант с постоянной проверкой считается приемлимым, то какой должен быть промежуток между проверками?
  • Вопрос задан
  • 132 просмотра
Решения вопроса 2
@Everything_is_bad
Как уже сказали, для чатов самое оптимальное websocket, только тут всплывет что у Django с этим проблема, есть channels, но мне они очень не нравятся, выглядит как переделанный сбоку костыль. Кроме этого, год назад видел попытки реализации websocket на основе текущего async в Django, но за этим не следил, так что не знаю какое там сейчас состояние. Так что лучшее решение, перенести чат на async фреймворки
Ответ написан
Как уже сказали, для чатов самое оптимальное websocket, только тут всплывет что у Django с этим проблема, есть channels, но мне они очень не нравятся, выглядит как переделанный сбоку костыль.


Как сказали выше — обычно используются websockets. Это стандарт, но только почему-то во всех бэкэнд фреймворках websocket’ы реализованы криво косо (FastApi, Django…). Как альтернативная идея можно попробовать написать API, что будет получать новые сообщения и пользоваться этим API на фронте условные каждые 10 секунд. Я бы сделал если бы не через websocket’ы, то так!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы