2017-11-09 2 views
0

이 페이로드 객체를 각도 4 컴포넌트에 전달하는 방법은 무엇입니까? 나는 PostMessage를 읽어하지만 그것은 나를 위해 일을 어쩌려 구`t :(누군가가 괜찮 작동하는 방법을 설명 할 수postMessage 객체 from 서비스 작업자

서비스 노동자 :

messaging.setBackgroundMessageHandler((payload) => { 
    const notificationOptions = { 
    "body": data.body, 
    "icon": "icon.png", 
    "click_action": click_action 
    }; 
    postMessage({'test'}); 
    return self.registration.showNotification(notificationTitle, notificationOptions); 
}); 

구성 요소 :

export class AppComponent implements OnInit { 

    constructor() {} 
    ngOnInit() { 
    navigator.serviceWorker.addEventListener('message', function(event) { 
     console.log("Got reply from service worker: " + event.data); 
    }); 
    self.addEventListener('message', event => { 
     console.log('MESSAGE: ',event.data); 
    }); 

    } 
} 

답변

0

에있다 Service Worker 코드에서 최소한 하나의 버그가 있습니다. postMessage 어딘가에 명시 적으로 특정 클라이언트를 메시지에 추가해야합니다. 먼저 서비스 작업자가 제어하는 ​​클라이언트를 쿼리 한 다음 t 헛기침. Client.postMesssage()의 MDN 문서를 확인하십시오.

또한 제공된 구성 요소 코드에서 서비스 근로자를 처음으로 등록하지 마십시오. postMessage API를 통해 전송 된 메시지에 이벤트 리스너를 추가하기 만하면되지만 서비스 작업자는 초기화/등록하지 않습니다. 나는 정말로 당신이 serviceworke.rs의 훌륭한 가이드 :-)를 통해가는 것이 좋습니다