ServiceWorkerGlobalScope

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

보안 컨텍스트: 이 기능은 일부 또는 모든 지원 브라우저보안 컨텍스트 (HTTPS)에서만 사용할 수 있습니다.

참고 : This feature is only available in Service Workers.

Service Worker APIServiceWorkerGlobalScope 인터페이스는 서비스 워커의 전역 실행 맥락을 나타냅니다.

개발자는 ServiceWorker 상태가 종료/재시작 주기 동안 유지되지 않는다는 것을 명심해야 하며, 따라서 각 이벤트 처리기는 초기화된 기본 전역 상태로 호출되고 있다고 가정해야 합니다.

서비스 워커가 성공적으로 등록되면, 메모리와 프로세서 전력을 절약하기 위해 유휴 상태에서 종료될 수 있고 종료될 것입니다. 활성화된 서비스 워커는 fetchmessage 같은 이벤트에 응답하기 위해 자동으로 재시작됩니다.

또한 서비스 워커 내의 동기 요청은 허용되지 않으며, fetch() 메서드를 통해 시작된 것과 같은 비동기 요청만 사용할 수 있습니다.

이 인터페이스는 WorkerGlobalScope 인터페이스와, 그 부모 EventTarget에서 상속받습니다.

EventTarget WorkerGlobalScope ServiceWorkerGlobalScope

인스턴스 속성

이 인터페이스는 WorkerGlobalScope 인터페이스와 그 부모 EventTarget에서 속성을 상속받습니다.

ServiceWorkerGlobalScope.clients 읽기 전용

서비스 워커와 관련된 Clients 객체를 포함합니다.

ServiceWorkerGlobalScope.cookieStore 읽기 전용 Experimental

서비스 워커와 관련된 CookieStore 객체에 대한 참조를 반환합니다.

ServiceWorkerGlobalScope.registration 읽기 전용

서비스 워커의 등록을 나타내는 ServiceWorkerRegistration 객체를 포함합니다.

ServiceWorkerGlobalScope.serviceWorker 읽기 전용

서비스 워커를 나타내는 ServiceWorker 객체를 포함합니다.

인스턴스 메서드

이 인터페이스는 WorkerGlobalScope 인터페이스와 그 부모 EventTarget으로부터 메서드를 상속받습니다.

ServiceWorkerGlobalScope.skipWaiting()

서비스 워커 클라이언트가 현재 서비스 워커를 사용하고 있는 동안 대기 상태에 있는 서비스 워커 등록이 활성 상태가 되도록 허용합니다.

이벤트

addEventListener()를 사용하거나 인터페이스의 oneventname 속성에 이벤트 수신기를 할당하여 이 이벤트를 수신합니다.

activate

ServiceWorkerRegistration이 새로운 ServiceWorkerRegistration.active 워커를 획득할 때 발생합니다.

backgroundfetchabort Experimental

사용자나 앱에 의해 백그라운드 페치 작업이 취소되었을 때 발생합니다.

backgroundfetchclick Experimental

사용자가 백그라운드 페치 작업을 클릭했을 때 발생합니다.

backgroundfetchfail Experimental

백그라운드 페치 작업 요청 중 하나 이상이 실패했을 때 발생합니다.

backgroundfetchsuccess Experimental

백그라운드 페치 작업의 모든 요청이 성공했을 때 발생합니다.

canmakepayment Experimental

결제 앱의 서비스 워커에서 결제를 처리할 준비가 되었는지 확인하기 위해 발생합니다. 특히, 상점 웹사이트에서 PaymentRequest() 생성자를 호출할 때 발생합니다.

contentdelete Experimental

ContentIndex에서 항목이 제거되었을 때 발생합니다.

cookiechange Experimental

서비스 워커의 쿠키 변경 구독 목록과 일치하는 쿠키 변경이 발생했을 때 발생합니다.

fetch

fetch()가 호출될 때 발생합니다.

install

ServiceWorkerRegistration이 새로운 ServiceWorkerRegistration.installing 워커를 획득할 때 발생합니다.

message

메시지를 받을 때 발생합니다. 제어된 페이지는 MessagePort.postMessage() 메서드를 사용해 서비스 워커에 메시지를 보낼 수 있습니다.

messageerror

수신 메시지를 역직렬화 할 수 없을 때 발생합니다.

notificationclick

사용자가 표시된 알림을 클릭할 때 발생합니다.

notificationclose

사용자가 표시된 알림을 닫을 때 발생합니다.

paymentrequest Experimental

PaymentRequest.show() 메서드를 통해 상점 웹사이트에서 결제 흐름이 시작되었을 때 결제 앱에서 발생합니다.

sync

서비스 워커 클라이언트 페이지에서 SyncManager.register를 호출하면 트리거됩니다. 네트워크가 사용 가능하면, 또는 네트워크가 사용할 수 있게 되는 즉시 동기화를 시도합니다.

periodicsync Experimental

PeriodicSyncManager를 등록할 때 지정한 주기적인 간격으로 발생합니다.

push

서버 푸시 알림을 받을 때 발생합니다.

pushsubscriptionchange

푸시 구독이 무효화되었거나 무효화되려고 할 때 발생합니다 (예: 푸시 서비스가 만료 시간을 설정할 때).

예제

이 코드 조각은 서비스 워커 prefetch 샘플에서 가져온 것입니다 (라이브 prefetch 예제 참조.) onfetch 이벤트 처리기는 fetch 이벤트를 수신합니다. 이벤트가 발생하면, 코드는 Cache 객체에서 첫 번째로 일치하는 요청이 이행된 프로미스를 반환합니다. 일치하는 요청이 없으면, 코드는 네트워크에서 응답을 가져옵니다.

이 코드는 fetch() 작업에서 발생하는 예외도 처리합니다. HTTP 오류 응답(예: 404)은 예외를 트리거하지 않는다는 점을 주의하세요. 적절한 오류 코드가 설정된 일반 응답 객체를 반환합니다.

js
self.addEventListener("fetch", (event) => {
  console.log("Handling fetch event for", event.request.url);

  event.respondWith(
    caches.match(event.request).then((response) => {
      if (response) {
        console.log("Found response in cache:", response);

        return response;
      }
      console.log("No response found in cache. About to fetch from network…");

      return fetch(event.request).then(
        (response) => {
          console.log("Response from network is:", response);

          return response;
        },
        (error) => {
          console.error("Fetching failed:", error);

          throw error;
        },
      );
    }),
  );
});

명세서

Specification
Service Workers
# serviceworkerglobalscope-interface

브라우저 호환성

BCD tables only load in the browser

같이 보기