Совместный веб-сайт Django в реальном времени

Мой вопрос о сотрудничестве в реальном времени между пользователями на веб-сайте с поддержкой django.

На практике мне нужно знать, возможно ли реализовать такую ​​систему: 1) Сказать, что все пользователи, использующие веб-сайт, являются user1, user2, ... userN 2) Каждый раз, когда один из пользователей делает что-то интересное, уведомляют сервер. и другие пользователи для обновления статуса приложения и пользовательского интерфейса браузера. 3) Предыдущий пункт может быть расширен, чтобы охватить не только события, инициируемые пользователем, но также и другие более общие события, такие как тайм-ауты, "каждые 5 минут" или все, что вы можете представить.

Я знаю, что связь между браузером и сервером и сервером и браузером может осуществляться через ajax (или что-то более новое, например, веб-сокеты или SSE), но неясная для меня часть заключается в том, как уведомлять пользователей, когда происходят определенные события. Единственная (плохая) идея, которая приходит на ум, - хранить данные приложения в базе данных и обновлять их, когда пользователь что-то делает, и в то же время все пользователи опрашивают статус приложения из db. Но я бы знал, если есть способ избежать использования базы данных и системы опроса, другими словами что-то вроде:

когда событие e срабатывает => отправить во все браузеры "e срабатывает"

заранее спасибо

Я попытаюсь лучше объяснить мой вопрос: я хотел бы знать, как отправить ответ пользователю "Фрэнк", когда другой пользователь "Джон" что-то сделает. Проблема не в том, как сервер отправляет что-то в браузер, а в том, как связать действия Джона (то есть нажать кнопку, изменить страницу, заполнить формы) с пользовательским интерфейсом Фрэнка без использования базы данных. Например, подумайте о простой странице чата, когда пользователь печатает что-то, набранный текст должен быть передан всем остальным пользователям: в этом случае я не знаю, как связать действие "Джон набрал что-то" с действием "отправить набранный текст". в браузер Фрэнка ". Решение memcache звучит хорошо, но я хотел бы знать, есть ли что-то еще, например, pub-sub или система событий, которая может использоваться для связи соединений разных пользователей.

1 ответ

Реализуйте кеш (т.е. memcache), чтобы избежать попадания в базу данных, когда вызов Ajax проверяет изменения. Если вы хотите стать модным, посмотрите на истечение срока действия кэша на основе ключей, чтобы справиться с аннулированием кэша.

Другие вопросы по тегам