Как мы можем реализовать «Уведомление о звонке» внутри ядра asp.net mvc-6 - PullRequest
2 голосов
/ 17 апреля 2019

Я работаю над основным веб-приложением asp.net, и наша система обладает множеством функций, позволяющих назначать элементы зарегистрированным пользователям, где я хочу уведомлять пользователей об этих элементах, внедряя уведомление типа Bell ( был использован многими социальными сетями), а именно: -

enter image description here

сейчас на этом этапе я пытаюсь понять, как эти уведомления работают за кулисами, так как после проверки уведомления мы не получим никаких ожидающих элементов. поэтому, насколько я понимаю, это работает следующим образом: -

  1. Мне нужно, чтобы на моей странице был javascript, который проверит нашу базу данных на наличие всех уведомлений, назначенных пользователю +, которые не были прочитаны ранее.
  2. затем показать номер, как показано выше.
  3. если пользователь нажимает на звонок, чтобы проверить ожидающие элементы >> отправлять запросы на наш сервер, чтобы обновить эти ожидающие элементы, чтобы они были прочитаны пользователем?

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

1 Ответ

3 голосов
/ 17 апреля 2019

Ваш вопрос слишком широк, чтобы на него можно было дать разумный ответ, но обычно:

  • Вам вообще не нужен JavaScript, если у вас все в порядке с его обновлением только при обновлении / изменении страницы. Например, если это было частью макета вашего сайта, то он будет загружаться на каждой странице. Когда пользователь перемещается по сайту, звонок будет обновляться на основе текущего количества уведомлений каждый раз, когда пользователь запрашивает новую страницу. Однако, если они остаются на одной странице в течение длительного периода времени, они не будут уведомлены о каких-либо новых уведомлениях. Это не обязательно проблема, хотя. Многие сайты ведут себя так.

  • Если вы действительно хотите немедленных обновлений, то вам нужно использовать SignalR (websockets). На стороне сервера вы создадите концентратор, а на стороне клиента - вы подпишитесь на определенный тип сообщений из этого концентратора (JavaScript). Когда происходит что-то, о чем пользователь должен быть уведомлен, через концентратор будет отправлено новое сообщение такого типа, которое будет немедленно отправлено подписанным клиентам. Затем будет вызван обратный вызов подписки на стороне клиента, что позволит вам выполнять такие вещи, как динамическое обновление количества уведомлений (больше JavaScript).

  • Независимо от того, какой метод вы выберете, вам лучше всего будет создать компонент представления для этой серверной части. Это позволит вам инкапсулировать логику запроса базы данных для уведомлений и рендеринга колокола вместе, а затем просто перенести это в ваш макет, например.

  • Если для этого есть сторона клиента (то есть для немедленных обновлений), вы, вероятно, также захотите использовать какой-то компонент там (через Vue.js, React, Angular и т. Д. - у каждого есть свои "компоненты"). Это позволит вам аналогичным образом заключить всю логику для этого в один контейнер многократного использования.

...