Совместный веб-сайт Django в реальном времени
Мой вопрос о сотрудничестве в реальном времени между пользователями на веб-сайте с поддержкой django.
На практике мне нужно знать, возможно ли реализовать такую систему: 1) Сказать, что все пользователи, использующие веб-сайт, являются user1, user2, ... userN 2) Каждый раз, когда один из пользователей делает что-то интересное, уведомляют сервер. и другие пользователи для обновления статуса приложения и пользовательского интерфейса браузера. 3) Предыдущий пункт может быть расширен, чтобы охватить не только события, инициируемые пользователем, но также и другие более общие события, такие как тайм-ауты, "каждые 5 минут" или все, что вы можете представить.
Я знаю, что связь между браузером и сервером и сервером и браузером может осуществляться через ajax (или что-то более новое, например, веб-сокеты или SSE), но неясная для меня часть заключается в том, как уведомлять пользователей, когда происходят определенные события. Единственная (плохая) идея, которая приходит на ум, - хранить данные приложения в базе данных и обновлять их, когда пользователь что-то делает, и в то же время все пользователи опрашивают статус приложения из db. Но я бы знал, если есть способ избежать использования базы данных и системы опроса, другими словами что-то вроде:
когда событие e срабатывает => отправить во все браузеры "e срабатывает"
заранее спасибо
Я попытаюсь лучше объяснить мой вопрос: я хотел бы знать, как отправить ответ пользователю "Фрэнк", когда другой пользователь "Джон" что-то сделает. Проблема не в том, как сервер отправляет что-то в браузер, а в том, как связать действия Джона (то есть нажать кнопку, изменить страницу, заполнить формы) с пользовательским интерфейсом Фрэнка без использования базы данных. Например, подумайте о простой странице чата, когда пользователь печатает что-то, набранный текст должен быть передан всем остальным пользователям: в этом случае я не знаю, как связать действие "Джон набрал что-то" с действием "отправить набранный текст". в браузер Фрэнка ". Решение memcache звучит хорошо, но я хотел бы знать, есть ли что-то еще, например, pub-sub или система событий, которая может использоваться для связи соединений разных пользователей.
1 ответ
Реализуйте кеш (т.е. memcache), чтобы избежать попадания в базу данных, когда вызов Ajax проверяет изменения. Если вы хотите стать модным, посмотрите на истечение срока действия кэша на основе ключей, чтобы справиться с аннулированием кэша.