Как в django_channels не потерять сообщения, если подключенного пользователя нет?
я создал небольшой чат на django_channels, в чате должно быть 2 человека и если я отправляю сообщение в чат, то хочу, чтобы если в чате меньше 2 человек (илм если клиента нет), то помечтать его как не прочитанное при сохранении в базу, а при соединении запрашивать список всех не прочитанных и выдавать их.
Как это сделать? Не пойму как определить, что человек, которому я пишу не соединён с вебсокетом
Могу ошибаться, но по-моему все сообщения должны храниться в БД, просто флажок "непрочитанного" должен сниматься (или не ставиться), если человек в данный момент читает чат.
В базе понятно, но как понять, что оно дошло до адресата, чтобы этот флажок поставить. Я частично решил этот вопрос, пока еще костыльный метод, позже полноценное решение наверно выложу
mcrack25, чтобы быть на 100% уверенным - нужно чтобы клиент с фронта помечал их как прочитанные.
То есть вывели на клиенте сообщение в некой форме, и после этого на бэк отправили смену статуса на прочитанные.
Короче ничего более менее правильного не придумал как сделать следующее:
В методе connect как только пользователь соединяется, я складываю его Id во внешний список всех подключенных пользователей, таким образом я определяю кто онлайн, в методе disconnect я удаляю пользователя из этого списка, в методе receive я уже произвожу сохранение в базу и если whom - кому отправляю его Id нет в том списке подключенных, то помещают его как delivered=False и уже сохраняю
В качестве внешнего списка можно использовать redis например, я просто списком сделал.