Stackoverflow, Linkedin, как уведомление, когда есть новая активность

0

На многих сайтах есть система уведомлений при появлении новых сообщений.

Например,

в stackoverflow Изображение 174551

в LinkedIn Изображение 174551

Когда нажимается, страница перезагружается.

Я хотел реализовать такую систему в своем приложении. Поэтому, когда новые элементы добавляются в базу данных, показывайте это уведомление и когда пользователь нажимает на него. Перезагрузите страницу.

Кто-нибудь имеет представление о том, как это вид уведомления работает и как мы можем его реализовать? Любые сообщения или идеи относительно этого были бы полезны.

Кроме того, если кто-то считает, что у этого вопроса может быть больше тегов, не стесняйтесь добавлять.

  • 0
    Как вы думаете, они работают? и что происходит, когда вы пытаетесь такой подход?
  • 0
    Я действительно понятия не имею, как они работают. Я просто хотел знать, есть ли у кого-нибудь идея и может ли дать предложения
Теги:
asp.net-mvc
notifications
signalr

2 ответа

3
Лучший ответ

Вот краткая идея, как вы можете это сделать.

Автоматическое обновление на стороне клиента и получение контента с помощью сообщения 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
    }
  • 0
    Я пытаюсь воплотить в жизнь то, что твоя идея :), один маленький вопрос. Перед завершением скрипта вы вызвали GetNotification(); это вызвать страницу, когда она загружается в первый раз?
  • 0
    получил это работает спасибо
Показать ещё 2 комментария
0

Ответ Ashwini Vermas использует опрос вместо pub/sub. Это увеличит трафик и наложит нагрузку на веб-сервер и т.д. Вместо этого используйте SignalR.

Я бы опубликовал все системные события на шине сообщений, после чего клиенты могут подписаться на них с помощью этой библиотеки

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy

Вот демонстрация

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/master/SignalR.EventAggregatorProxy.Demo.MVC4

disclamier: Я автор библиотеки

  • 0
    Я согласен с вами, что на БД будет много стресса, если мы будем следовать технике Ашвини. Не могли бы вы написать небольшой код, такой как pub sub patter, чтобы решить эту ситуацию с вашей библиотекой. Спасибо
  • 0
    Я думаю, что лучше всего посмотреть на демо выше. Какой сервисный автобус у вас в системе. Будут ли сообщения обрабатываться или не обрабатываться (SOA)?
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню