Я встраиваю простой чат в веб-приложение, работающее на Django, но меня смущает то, как я должен хранить сообщения между пользователями.
Чат будет поддерживать несколько пользователей, а "сеанс" чата состоит из пользователей, подключенных к одному пользователю, который является "хостом". Приложение является своего рода средством совместной работы с документами, поэтому у пользователя X есть документ, и пользователи Y и Z подключаются к пользователю X, чтобы поговорить о документе, и это будет один сеанс чата.
Если пользователь Y отключился на пять минут, а затем снова вошел в систему и снова подключился к пользователю X, он не должен получать никаких сообщений, которыми обменивались пользователи X и Z, пока его не было.
если пользователи X, Y и Z могут иметь сеанс чата о документе пользователя X, тогда пользователи X и Y могут подключиться к одновременному, но отдельному обсуждению документа пользователя Z.
Как мне справиться с этим? Должен ли я хранить каждое сообщение в базе данных? Каждое сообщение будет иметь пользователя-владельца и целевого пользователя (хост), а отдельная таблица будет использоваться для связи пользователей с сообщениями (какие сообщения видны тем или иным пользователям).
Или я должен хранить каждый сеанс в виде HTML-файла на сервере, к каким сообщениям добавляются?
Проблема в том, что я не могу просто отправлять сообщения напрямую между клиентами. Они должны быть отправлены на сервер в запросе POST, а затем каждый клиент должен периодически проверять сообщения в запросе GET. За исключением того, что я не могу просто очистить каждое сообщение после того, как клиент его получит, потому что может быть несколько клиентов. Как мне это настроить? Есть предложения?