207 похожих чатов

Сорри за оффтоп, не знаю где спросить. Компонент чата. Каждые 3

секунды делается запрос к API, чтобы узнать есть ли новые сообщения. Сокеты не подключали, чтобы не усложнять, но вопрос не про это :)

Меня смущает, что каждые 3 секунды на бэкэнде делается запрос в базу. И большинство этих запросов не отдают новой информации.

Как можно улучшить это все? Я придумал только положить id последнего сообщения в редис, при запросе к api присылать id последнего сообщения на клиенте и дергать сначала редис, а базу дергать только если они не совпадают.

10 ответов

62 просмотра

Сокеты

Vadim- Автор вопроса
Max Kiner
Сокеты

Так они же не решают проблему постоянных запросов к базе :)

Vadim- Автор вопроса
Max Kiner
Решают

Уточню. Чат не между людьми в этой системе. Это чат оператора с людьми в чат-ботах мессенджеров. Т.е. сообщения из мессенджеров кладутся в базу сначала.

В твоём случае при поступлении новых сообщений в бд надо как ты и сказал положить в какую нибудь прослойку редис или ребитмк. Далее дергать её, ну и обновлять своевременно.

Vadim- Автор вопроса
Aleksandr Drozdov
В твоём случае при поступлении новых сообщений в б...

Спасибо! Попробую так сначала. Не хочется сокеты еще поднимать.

Vadim
Спасибо! Попробую так сначала. Не хочется сокеты ...

можно server sent events (SSE) если ws и php берите ratchet (reactphp)

Vadim- Автор вопроса
Сергей Rekryt Крупкин
можно server sent events (SSE) если ws и php берит...

Спасибо за ответ! Да, лучше взять ratchet. SSE на клиенте вроде просто, но на php сходу не нашел как сделать.

Vadim
Спасибо за ответ! Да, лучше взять ratchet. SSE на ...

с помощью ratchet можно и ws и sse и http сервер если что

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта