The Client interface of the ServiceWorker API represents the scope of a service worker client. A service worker client is either a document in a browser context or a SharedWorker, which is controlled by an active worker. A client object acts as a snapshot representation of its associated service worker client in the scope of a service worker.


Allows a service worker to send a message to a ServiceWorkerClient.


Client.frameType 只读
Indicates the type of browsing context of the current client. This value can be one of auxiliarytop-levelnested, or none. 只读
Returns the universally unique identifier of the Client object.
Client.url 只读
The URL of the current service worker client.


This code is based on a snippet taken from the service worker post-message sample (see post-message live.) The code sends message data to which the service worker can reply via Client.postMessage().

The message is wrapped in a promise that resolves if the response doesn't contain an error and rejects with the error.

// service worker client (e.g. a document)
function sendMessage(message) {
  return new Promise(function(resolve, reject) {
    // note that this is the ServiceWorker.postMessage version
    window.serviceWorker.onMessage = function(e) {
// controlling service worker
self.addEventListener("message", function(e) {
  // e.source is a client object
  e.source.postMessage("Hello! Your message was: " +;


Specification Status Comment
Service Workers
Working Draft Initial definition.

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 40.0[1] 44.0 (44.0)[2] 未实现 ? 未实现
Feature Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support ? 44.0 (44.0) ? 未实现 ? 未实现 ?

See also