Если ты не понимаешь теорию, значит на практике у тебя ничего стоящего не выйдет.
А так вполне себе хорошая теория тут
https://developer.mozilla.org/en-US/docs/Web/API/P...
И она содержит ссылочку на вполне себе реальный пример
https://github.com/chrisdavidmills/push-api-demo
Как эта штука используется на практике.
После того, как вы определились с тем, что вы собираетесь отправлять, вам нужно сделать несколько вещей.
1. Запросить у пользователя разрешение на отправку уведомлений. Делается это через
Notification.requestPermission. Если мы получили подтверждение, то идем дальше, если нет, забиваем на это дело. Здесь нужно быть очень осторожным и делать это ненавязчиво.
2. Создать фоновый обработчик, который будет принимать push-уведомления от сервера. Это делается через вызов
navigator.serviceWorker.register. Например так
https://github.com/chrisdavidmills/push-api-demo/b...
Он подписывается на канал. Канал - это как комната в чате.
За канал отвечает сервер. Сервер слушает порт, браузер подключается к серверу и тупо ждет пока сервер что-нибудь пришлет. Сервер может периодически отправлять пустые сообщения, на которые клиент должен отвечать для поддержания соединения активным. Поэтому у сервера может быть много открытых соединенией.
3. Написать сервер уведомлений. У nginx есть
хороший модуль. Он будет обслуживать клиентов.
Рекомендую к просмотру
https://www.youtube.com/watch?v=5A5Iw9z6z2s