Node.js
Skicka webbmeddelande
Sök…
Skicka webbmeddelande med GCM (Google Cloud Messaging System)
Ett sådant exempel är kunskap om stor spridning bland PWA: er (Progressive Web Applications) och i det här exemplet kommer vi att skicka en enkel Backend-liknande meddelande med NodeJS och ES6
Installera Node-GCM-modul:
npm install node-gcm
Installera Socket.io:
npm install socket.io
Skapa en GCM-aktiverad applikation med Google Console.
Ta tag i din GCM-applikations-id (vi kommer att behöva det senare)
Ta tag i din hemliga kod för GCM-applikationen.
Öppna din favoritkodeditor och lägg till följande kod:
'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: Jag använder här en speciell hack för att Socket.io ska fungera med Express eftersom det helt enkelt inte fungerar utanför boxen.
Skapa nu en .json- fil och namnge den: Manifest.json , öppna den och passera följande:
{
"name": "Application Name",
"gcm_sender_id": "GCM Project ID"
}
Stäng den och spara i din ROOT- katalog.
PS: filen Manifest.json måste finnas i rotkatalogen, annars fungerar den inte.
I koden ovan gör jag följande:
- Jag skapade och skickade en normal index.html-sida som också kommer att använda socket.io.
- Jag lyssnar på en anslutningshändelse som skjutits upp från front- enden, min index.html-sida (den kommer att avfyras när en ny klient har anslutits till vår fördefinierade länk)
- Jag skickar en speciell kännedom som registreringstoken från min index.html via socket.io new_user- händelse, ett sådant token kommer att vara vårt användar unika lösenord och varje kod genereras vanligtvis från en stödjande webbläsare för webbmeddelandets API (läs mer här.
- Jag använder helt enkelt modulen node-gcm för att skicka mitt meddelande som kommer att hanteras och visas senare med hjälp av Service Workers `.
Detta är från NodeJS synvinkel. i andra exempel kommer jag att visa hur vi kan skicka anpassad data, ikoner .. etc. i vårt pushmeddelande.
PS: du kan hitta den fullständiga fungerande demonstrationen här.