Как я могу написать уведомление для сайта? - PullRequest
0 голосов
/ 13 апреля 2019

Я создаю сайт для себя.Я использую MongoDB, feathers.js, Node.js и Angular 5. Я хотел бы добавить Уведомление для этого.Это похоже на уведомление StackOverflow.enter image description here

Мне не нужно push-уведомление.Просто хочу, чтобы красная подсветка точно соответствовала уведомлению StackOverflow, когда я делаю какие-то конкретные события.Я новичок, поэтому, пожалуйста, дайте мне подробную информацию о том, что мне нужно написать как на переднем, так и на заднем плане, или несколько хороших источников об этом.Спасибо заранее.

Ответы [ 3 ]

0 голосов
/ 13 апреля 2019

Есть два подхода для достижения этой цели.

  • Вы можете использовать опрос, чтобы получить уведомление для пользователя. При опросе клиент отправляет серверу запрос через определенный промежуток времени, например, 5 минут, чтобы спросить, есть ли новое уведомление или нет. Затем с типом ответа вы можете показать / скрыть символ уведомления

  • Другой подход заключается в использовании сокетного соединения между сервером и клиентом для установления связи. Когда пользователю необходимо отправить уведомление, сервер отправляет уведомление через сокет-соединение, а не ждет, пока клиент сделает запрос.

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

Совет : Если вы начинаете внедрять для нескольких тысяч пользователей или хобби-проект, то идите на опрос. Рассматривайте сокетные соединения только тогда, когда вам необходимо срочно показать уведомление с нулевой задержкой, а ваша клиентская база составляет по меньшей мере несколько миллионов.

0 голосов
/ 15 апреля 2019

Если вы используете socketio с перьями, это легко реализовать.

Прочтите об этом в каналах событий .

Идея состоит в том, чтобы создать канал вваш сервер для захвата подключенных пользователей через сокет.

app.on('connection', connection => {
   app.channel('anonymous').join(connection);
});

Затем, если вызывается сервисный метод, сообщите соединения в канале.

app.service('notifications').publish('created', (data, context) => {
  return app.channel('anonymous');
});

Затем в вашем клиентеКроме того, вы получите опубликованные данные, прослушав событие метода.

app.service('notifications').on('created', notification => {
      console.log('notification created', notification);
   });

Затем, если вам нужен живой пример, попробуйте пернатый чат

0 голосов
/ 13 апреля 2019

Создание службы, которая запрашивает уведомления со стороны сервера через HTTP. Ваш компонент, который должен показывать, что красная точка будет использовать эту службу и изменять ее состояние в зависимости от ответа от этой службы. Вот пример работы с HTTP: HTTP в Angular Итак, создайте сервис, который запрашивает у сервера уведомления. Затем создайте компонент, который выполняет логику представления, используя созданный вами сервис (это делается с помощью Dependency Injection, например здесь ).

...