Re: [ServiceWorker] ServiceWorkerClient to Client (#588)

Before I respond to specific points, I really should have provided example usage code:

Responding to a push message:

```js
self.addEventListener('push', function(event) {
  if (event.message.data == 'new-chat-message') {
    fetch('/latest-messages').then(r => r.json()).then(function(data) {
      clients.getAll().then(function(clients) {
        // filter clients to relevent urls
        clients = clients.filter(c => new URL(c.url).pathname.indexof('/chat/') === 0);
        // tell them about the new messages
        clients.forEach(c => c.postMessage(data));

        // if we don't have a focused & visible window, show notification
        if (!clients.find(c => !c.hidden && c.focused)) {
          registration.showNotification(data[0].username, {
            body: data[0].message,
            icon: data[0].avatarURL,
            tag: 'chat-' + data[0].username
          });
        }
      });
    });
  }
});
```

Responding to a notification activation:

```js
self.addEventListener('notificationclick', function(event) {
  // chat notification clicked
  if (event.notification.tag.indexOf('chat-') === 0) {
    clients.getAll().then(function(clients) {
      // look for relevent window, or make a new one
      var client = clients.find(c => new URL(c.url).pathname.indexof('/chat/') === 0)
        || new Client('/chat/');

      // focus it
      client.focus();
    });
  }
};
```

---
Reply to this email directly or view it on GitHub:
https://github.com/slightlyoff/ServiceWorker/issues/588#issuecomment-66985639

Received on Monday, 15 December 2014 12:11:21 UTC