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