как отправить уведомление пользователям по VAPID в pwa angular, используя сервисы и express.js - PullRequest
0 голосов
/ 14 мая 2019

Я пробовал много вещей, чтобы получить рабочее уведомление PWA Angular Express.js и с помощью сервисного работника, но ни одна из них не работает так, как я ожидал.Я хочу сделать простой сайт.если пользователь подпишется на это, он выдаст уведомление Express.js

Я новичок в этом PWA и Service Worker.

Я прилагаю свой код, который я сделал до сих пор.

      reloadCache() {
        if (this.swUpdate.isEnabled) {
          this.swUpdate.available.subscribe(() => {
            if (confirm("New version available. Load New Version?")) {
              window.location.reload();
            }
          });
        }
      }

  subscribeToNotification(){
    if (this.swUpdate.isEnabled) {
      this.swPush.requestSubscription({
        serverPublicKey: this.VAPID_KEY
      })
      .then(sub =>{
        this._ws.postSubscription(sub).subscribe();
      })
    }
  }
  postSubscription(sub: PushSubscription){
    return this._http.post('http://localhost:3000/subscribe', sub)
  }

в express.js =>

app.get('/', (req, res)=>{
    res.send('this is push notification server use post')
});

app.post('/subscribe', (req, res)=>{
    let sub = req.body;
    res.set('Content-Type', 'application/json');
    webpush.setVapidDetails(
        "mailto:gmail.com", //why this part is used..if possible please explain it
        "public-key",
        "private-key"
    );

    let payload= JSON.stringify({
        "notification":{
            "title":"demo",
            "body": "did it",
            "icon": ""
        }
    });

    Promise.resolve(webpush.sendNotification(sub, payload))
    .then(()=> res.status(200).json({
        message: "notification send"
    }))
    .catch(err=>{
        console.error(err);
        res.sendStatus(500);
    })
})
app.listen(3000, ()=> {
    console.log("Server Up");
});

это рабочий код.но я сгенерировал vapid, используя web-push generate-vapid-keys --json

и кнопку onclick. Я добавил триггер для получения уведомлений.Я хочу, чтобы пользователи автоматически открывали VAPID, когда они подписывались, и сохраняли его в базе данных.а затем я хочу отправить уведомление пользователям из базы данных.

не знаю, как идти дальше.пожалуйста, помогите мне с этой проблемой.

...