Поиск…


Отправить веб-уведомление с помощью GCM (Google Cloud Messaging System)

Такой пример знает широкое распространение среди PWA (Progressive Web Applications), и в этом примере мы собираемся отправить простое бэкэнд- уведомление с помощью NodeJS и ES6

  1. Установка модуля Node-GCM: npm install node-gcm

  2. Установите Socket.io: npm install socket.io

  3. Создайте приложение GCM Enabled с помощью Google Консоли.

  4. Grabe ваш идентификатор приложения GCM (он нам понадобится позже)

  5. Grabe ваш секретный код приложения GCM.

  6. Откройте свой любимый редактор кода и добавьте следующий код:

     '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 должен находиться в корневом каталоге, иначе он не будет работать.

В приведенном выше коде я делаю следующее:

  1. Я настроил и отправил обычную страницу index.html, которая также будет использовать socket.io.
  2. Я слушаю событие соединения, запущенное из front-end aka моей страницы index.html (он будет запущен, как только новый клиент успешно подключится к нашей предварительно определенной ссылке)
  3. Я отправляю специальный токен в качестве регистрационного токена из моего index.html через событие socket.io new_user , таким токеном будет наш уникальный пользовательский код доступа, и каждый код генерируется обычно из поддерживающего браузера API веб-уведомлений (подробнее Вот.
  4. Я просто использую модуль node-gcm для отправки моего уведомления, которое будет обработано и показано позже, используя Service Workers `.

Это с точки зрения NodeJS . в других примерах я покажу, как мы можем отправлять пользовательские данные, значки ..etc в нашем push-сообщении.

PS: здесь вы можете найти полную рабочую демоверсию .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow