@MrOnatsky

Как реализовать статус «просмотрено» в чате (напротив сообщений)?

Подскажите, как реализовать статус "прочитано" в сообщениях в чате?
Таблицы 2, управляющая chats и с сообщениями messages.

P.S. Думаю редиску использовать, чтобы базу каждый раз не дергать.
// v - viewed
$redis->set('v:' . $chat_id, $message_id . '_' . time());

И с каким-то интервалом новые значения сейвить в таблицу chats.
  • Вопрос задан
  • 561 просмотр
Пригласить эксперта
Ответы на вопрос 3
politon
@politon
HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
Используй WebSocket. Ajax для такого функционала- прошлый век
Ответ написан
Комментировать
itold_ru
@itold_ru
Разработчики веб-проектов
Отправлять текущий статус пользователя AJAX. Т.е. к примеру каждую секунду(к примеру!) - ajax запрос, типа пользователь читает текущий диалог, если он у него открыт - в таблице messages создать поле 'is_read' и ставить значение 1 (прочитано). Если закрыт - запросы не посылаются.

Также доводя до идеала - если пользователь не совершает действий отключаем сию систему с ajax )
Ответ написан
Комментировать
zoonman
@zoonman
⋆⋆⋆⋆⋆
Добавить третью таблицу - message_status.
В ней хранить message_id, user_id и read_at в виде nullable timestamp.
В интерфейсе чата контролировать сообщения попадающие в видимую область и отслеживать событие прокрутки.
Сохранять статус сообщений в модели на клиенте и периодически отправлять эти обновления на сервер в фоне и по page unload если что-то осталось.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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