Задать вопрос

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

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


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

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽