Отправка уведомления пользователю об изменении базы данных
Я создаю систему управления кафетерием, в которой есть два типа пользователей;customres & counter owners.
для каждого блюда, предлагаемого в кафетерии, есть блюдо aunique.id, связанный с ним.
до сих пор у меня есть купол что-то вроде student отправляет запрос POST с номером dish,id и counter на URL, который обновляет "таблицу заказов" (которая имеет PK как id). Когда блюдо готово, владелец прилавка нажимает кнопку "Prepeared".
в этом я хочу, чтобы клиент, чей заказ находится рядом с тем, что готово, получил уведомление о том, что "подготовка Вашего заказа продолжается."
Как мне это сделать? Один из способов-просто сделать вид, который имеет свой аргумент в качестве клиента.id & статус, и он отвечает с True или Flase. Я могу просто опросить URL-адрес и предоставить уведомление, если я получу True.
но я чувствую, что опрос не является лучшим подходом, так как будет так много клиентов, вошедших в систему, и каждый будет опрашивать сервер, который не приемлем. Есть лучший способ?
5 ответов
Это действительно зависит от того, что вам действительно нужно.
Если уведомления могут быть отправлены по части активности пользователей, просто добавьте сообщение пользователя, и он будет отображаться всякий раз, когда пользователь делает действие на странице. Джанго.ВНО.сообщения плюс несколько строк в вашем основном шаблоне html сделает это.
но если вы хотите, чтобы уведомление, чтобы быть интерактивным - вы можете использовать несколько вариантов PUSH
интересные ссылки:
со стороны серверов доступно несколько вариантов, самый простой -Зеленый Единорог. Использование его позволит вам иметь несколько тысяч соединений, открытых и управляемых только несколькими процессами.
Я не знаю, правильно ли вы поняли, но я думаю, что вы должны использовать websockets
http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/
самый простой способ "нажать" без повторного опроса будет "опроса", где клиент запускает запрос и получает ответ, как только он станет доступен. Вы все равно должны использовать сервер масштабирования, но он не забивается, по крайней мере, забивается все время.
есть лучшие, но более сложные способы для серверных толчков, посмотрите на статью, которую я связал выше.
есть два возможных пути...
переопределить связанные модели admin.py сохранить методы это описано здесь
вы можете использовать сигналы как описано здесь
с помощью учетной записи администратора.save_model проще и соответствует вашим потребностям. Поскольку у вас есть table_id, вы можете установить статус заказа таблиц в "подготовка".
поскольку мы не можем передавать данные через http, я думаю, что опрос-единственный оставшийся вариант.
вы можете запросить ajax для опроса, который можно использовать для обновления некоторых других статистических данных (если таковые имеются), а также сделать его более интерактивным :)