Node.js
Отправить веб-уведомление
Поиск…
Отправить веб-уведомление с помощью GCM (Google Cloud Messaging System)
Такой пример знает широкое распространение среди PWA (Progressive Web Applications), и в этом примере мы собираемся отправить простое бэкэнд- уведомление с помощью NodeJS и ES6
Установка модуля Node-GCM:
npm install node-gcm
Установите Socket.io:
npm install socket.io
Создайте приложение GCM Enabled с помощью Google Консоли.
Grabe ваш идентификатор приложения GCM (он нам понадобится позже)
Grabe ваш секретный код приложения GCM.
Откройте свой любимый редактор кода и добавьте следующий код:
'use strict'; const express = require('express'); const app = express(); const gcm = require('node-gcm'); app.io = require('socket.io')(); // [*] Configuring our GCM Channel. const sender = new gcm.Sender('Project Secret'); const regTokens = []; let message = new gcm.Message({ data: { key1: 'msg1' } }); // [*] Configuring our static files. app.use(express.static('public/')); // [*] Configuring Routes. app.get('/', (req, res) => { res.sendFile(__dirname + '/public/index.html'); }); // [*] Configuring our Socket Connection. app.io.on('connection', socket => { console.log('we have a new connection ...'); socket.on('new_user', (reg_id) => { // [*] Adding our user notification registration token to our list typically hided in a secret place. if (regTokens.indexOf(reg_id) === -1) { regTokens.push(reg_id); // [*] Sending our push messages sender.send(message, { registrationTokens: regTokens }, (err, response) => { if (err) console.error('err', err); else console.log(response); }); } }) }); module.exports = app
PS: Я использую здесь специальный хак, чтобы Socket.io работал с Express, потому что просто он не работает за пределами коробки.
Теперь создайте файл .json и назовите его: Manifest.json , откройте его и пропустите следующее:
{
"name": "Application Name",
"gcm_sender_id": "GCM Project ID"
}
Закройте его и сохраните в своем каталоге ROOT приложения.
PS: файл Manifest.json должен находиться в корневом каталоге, иначе он не будет работать.
В приведенном выше коде я делаю следующее:
- Я настроил и отправил обычную страницу index.html, которая также будет использовать socket.io.
- Я слушаю событие соединения, запущенное из front-end aka моей страницы index.html (он будет запущен, как только новый клиент успешно подключится к нашей предварительно определенной ссылке)
- Я отправляю специальный токен в качестве регистрационного токена из моего index.html через событие socket.io new_user , таким токеном будет наш уникальный пользовательский код доступа, и каждый код генерируется обычно из поддерживающего браузера API веб-уведомлений (подробнее Вот.
- Я просто использую модуль node-gcm для отправки моего уведомления, которое будет обработано и показано позже, используя Service Workers `.
Это с точки зрения NodeJS . в других примерах я покажу, как мы можем отправлять пользовательские данные, значки ..etc в нашем push-сообщении.
PS: здесь вы можете найти полную рабочую демоверсию .