Наиболее близким примером для моего случая является приложение ajax-чата Django. В комнатах необходимо вести список активных пользователей. Помимо отображения этого списка пользователей в чате, в данной комнате может быть максимальное количество активных пользователей; новые пользователи должны быть заблокированы от входа, если нет места.
В настоящее время у меня есть страница клиента чата, вызывающая просмотр опроса каждую секунду через ajax. Представление poll возвращает текст комнаты. Я полагаю, что опрос может также просто выполнить некоторый тип пинга - добавление пользователей в поле active_user M2M на объекте Room (у меня все это пока есть). Далее мне нужно что-то, что удаляет пользователей из списка active_user после некоторого времени ожидания.
Я полагаю, что есть два способа сделать это, и мне интересно, что было бы более эффективным для приложения, которое должно быть с точностью до секунды (или десять / пятнадцать секунд):
- Использование файлов cookie / сессий / промежуточного программного обеспечения а-ля этой темы (однако мне кажется, что этот метод не будет работать для мгновенной информации
- Другая модель, такая как явная таблица Users_Rooms 'through' с полем даты и времени для времени, которое обновляется при создании, и с каждым последующим пингом, и написать некоторую функцию, которая очищает старые
Это все, что я могу придумать. Я просто пытаюсь выяснить, является ли хорошей идеей попадание mySQL каждую секунду для каждого пользователя в каждой комнате, и задаюсь вопросом, действительно ли эта секунда - лучший вариант для этой задачи. Спасибо!