На многих сайтах есть система уведомлений при появлении новых сообщений.
Например,
в LinkedIn
Когда нажимается, страница перезагружается.
Я хотел реализовать такую систему в своем приложении. Поэтому, когда новые элементы добавляются в базу данных, показывайте это уведомление и когда пользователь нажимает на него. Перезагрузите страницу.
Кто-нибудь имеет представление о том, как это вид уведомления работает и как мы можем его реализовать? Любые сообщения или идеи относительно этого были бы полезны.
Кроме того, если кто-то считает, что у этого вопроса может быть больше тегов, не стесняйтесь добавлять.
Вот краткая идея, как вы можете это сделать.
Автоматическое обновление на стороне клиента и получение контента с помощью сообщения ajax.
<h2>Notification</h2>
<div id="divNotif" style="display:none;"></div>
<script id="sessionJs" type="text/javascript">
function GetNotification() {
$.ajax({
type: "GET",
url: '@Url.Action("GetNotification", "Notification")',
dataType: "html",
success: function (data) {
$("#divNotif").html(data);
$("#divNotif").fadeIn('slow');
setTimeout(function () { GetNotification(); }, 5000); //change timeout duration here
},
error: function (data) {
//alert("BAD:" + data.statusText);
}
});
}
GetNotification();
</script>
Контроллер return json
[HttpPost]
public ActionResult GetNotification()
{
int notifCount = fromDb.NotificationCount;
return Content("<span>New notification " + notifCount + "</span>", "text/html"); // returning a PartialView would be better one
}
GetNotification();
это вызвать страницу, когда она загружается в первый раз?
Ответ Ashwini Vermas использует опрос вместо pub/sub. Это увеличит трафик и наложит нагрузку на веб-сервер и т.д. Вместо этого используйте SignalR.
Я бы опубликовал все системные события на шине сообщений, после чего клиенты могут подписаться на них с помощью этой библиотеки
https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy
Вот демонстрация
disclamier: Я автор библиотеки