9

Widzę powiadomienia push dla stron internetowych Facebooka w chrome tylko wtedy, gdy otwieram chrome. Wiem, że to powiadomienie jest wysyłane przez pracownika serwisu. Zastanawiam się, czy ta synchronizacja w tle jest włączona, nawet jeśli przeglądarka jest zamknięta lub tylko po uruchomieniu Chrome rozpoczyna się proces synchronizacji serwisowej z robotem i rozpoczyna wysyłanie powiadomień push.Czy pracownik obsługi działa na tle, nawet jeśli przeglądarka jest zamknięta?

+1

Tak, to, czym są dla –

+0

@ Jonasw Jak przejść do stanu nieaktywnego? –

+0

http://stackoverflow.com/questions/39034950/google-chrome-push-notifications-not-working-if-the-browser-is-closed –

Odpowiedz

6

Najpierw trzeba powiedzieć, że to zależy od platformy. Moje rozumienie chrome:

Na platformach komputerowych, takich jak Windows i Mac OS X, przeglądarka musi mieć uruchomiony proces w tle, aby pracownik serwisu mógł działać. W systemie Mac OS X jest to dość łatwe do wykrycia, ponieważ przeglądarka nie może mieć otwartych okien, ale przeglądarka nadal ma świecącą kropkę poniżej.

Na platformach mobilnych łatwiej jest nasłuchiwać zdarzeń i obsługiwać je w wydajny sposób, więc w takich przypadkach platforma może obudzić przeglądarkę, która będzie obsługiwać dowolne odpowiednie zdarzenia.

Powyższe odnosi się do każdego api pracownika serwisowego.

na pulpicie: Jeśli przeglądarka jest całkowicie zamknięte następnie pracownicy usług nie można uruchamiać i nie wyśle ​​żadnych wydarzeń (tj żadnych pchać lub tło zsynchronizować terminy)

Na Telefon komórkowy: Zdarzenia nadal będą wysyłane (tzn. synchronizacja w tle uruchomi się, gdy urządzenie użytkownika przejdzie do trybu online, a naciśnięcie zostanie odebrane i spowoduje zdarzenie push).

+0

"Moje rozumienie chromu", myślałem, że pracujesz dla google? Przy okazji cofasz certyfikat SSL –

+0

Pracuję w Google i chociaż dobrze rozumiem, jak działa Chrome, jest to ciągle ewoluujący produkt i zmienia się niezwykle szybko. Dzięki, że wygląda jak mój skrypt letsencrypt spadł. –

+0

@GauntFace Jeśli istnieje kropka pod chromem oznacza to, że nadal działa, więc zgodnie z moim rozumieniem pracownik serwisu może nadal wykonywać synchronizację w tle. Ale moje zapytanie dotyczy tego, czy Chrome jest całkowicie zamknięty, czy pracownik serwisowy może wykonywać synchronizację w tle? –

1

Nie sądzę, że pracownik serwisu będzie mógł działać, jeśli przeglądarka jest zamknięta. Ponieważ pracownik serwisu może wysyłać powiadomienia push dopiero po otwarciu przeglądarki. Jeśli działa w tle, może wysłać powiadomienie nawet po zamknięciu przeglądarki.

+0

w dokumencie w3c (https: //w3c.gitub.io/ServiceWorker/# user-agent-shutdown) określa również, że agent użytkownika powinien przechowywać stan usługi serwisowej w przypadku zamknięcia. w moim przekonaniu oznacza to, że pracownik serwisu nie będzie działał na wypadek, gdyby agent użytkownika został zamknięty. – gosua

+0

@gosua Czy chciałbyś wyjaśnić trochę i dać misterną odpowiedź. –

+0

Nie mogłem znaleźć bardziej szczegółowych informacji niż te zdania w specyfikacji. "stan musi być przechowywany po tym, jak program użytkownika zostanie zamknięty" brzmi dla mnie tak, jakby pracownik serwisowy już nie istniał, jeśli agent użytkownika został pomyślnie zamknięty. – gosua

0

Nieco offtopic, ale można pisać rozszerzenie Chrome, gdzie background script może działać, jeśli Chrome może działać w tle (konfigurowalne w ustawieniach). Może również use GCM.

+0

Chciałbym poznać domyślne zachowanie pracownika usługi. Czy zamknięcie chrome spowoduje uruchomienie pracownika serwisowego? –

+0

Przetestowałem to iw chrome Service Worker działał, nawet jeśli chrome było zamknięte (ale działa w tle). Mogłem wysłać wiadomość, a pracownik z powodzeniem pokazał powiadomienie. –

+0

Ale nigdy nie widziałem powiadomienia w chrome, gdy jest zamknięte. Po otwarciu mojego Chrome wszystkie powiadomienia push od różnych firm (a mianowicie Facebook, Google) rozpoczynają bombardowanie na moim ekranie. więc założyłem, że pracownik serwisu nie uruchamia się, gdy przeglądarka jest zamknięta. –