2017-05-04 2 views
0

내 서버에서 서비스 작업자로 데이터를 전달하려고하지만 데이터가 서비스 작업자에게 비어 있습니다. 이것은을 console.log는 (메시지)서버에서 서비스 작업자에게 데이터를 전달하는 방법

var webpush = require('web-push'); 
var message = sendData.message; 
var subscription_info = sendData.subscription_info; 




webpush.setVapidDetails(
    'mailto:xxx', 
    public_key, 
    private_key 
); 

webpush.setGCMAPIKey('xxx'); 
webpush.sendNotification(subscription_info, String(message)); 

입니다 : 여기

내 코드입니다

{ text: 'message', 
    title: 'title', 
    icon_image: 'http://google.com/xxx.jpg', 
    link: 'www.google.com' } 

그리고 이것은 내 서비스 노동자입니다 :

self.addEventListener('push', function(event) { 

    var title = event.data.title; 
    var options = { 
    body: event.data.text, 
    requireInteraction: true 
    }; 

    event.waitUntil(self.registration.showNotification(title, options)); 
}); 

그러나 제목이 아니다 인식되고있다. 서버에서 서비스 작업자에게 데이터를 전달하려면 어떻게합니까?

답변

1

NodeJS 측에서 다음 코드를 시도하십시오. JSON 메시지 객체를 Buffer (바이너리)로 변환하기 위해 누락되었습니다.

var webpush = require('web-push'); 
var message = sendData.message; 
var subscription_info = sendData.subscription_info; 

webpush.setVapidDetails(
    'mailto:xxx', 
    <Vapid public key>, 
    <Vapid private key> 
); 

webpush.setGCMAPIKey('xxx'); 
message = new Buffer.from(JSON.stringify(message)); // missing code. 
webpush.sendNotification(subscription_info, String(message)); 

그리고 가입하면서 서비스 노동자에

, 당신은 가입 요청을 전송하여 암호화 된 공개 키를 전송하고 서버에서 푸시 알림을 보낼 것을 사용해야합니다.

ps. 공개 키는 서버 및 클라이언트 측에서 동일해야합니다.