- From: Andy Valencia <ajv-efurgetonrit@vsta.org>
- Date: Fri, 7 Apr 2017 21:59:46 +0000 (UTC)
- To: Salvador@vsta.org, de@vsta.org, la@vsta.org, Puente@vsta.org, González@vsta.org
- Cc: public-webapps@w3.org
> If I did not understand wrong, such generalisation already exists. The
> events that can wake a SW up are called Functional Events and are a point
> of extension.
> ...
> It is not clear to me what do you mean when saying that Service Workers
> expose a RESTful API. Sure you can user `fetch` to implement a RESTful API
> but other functional events use their own mechanisms.
The dominance of RESTful API's makes my default approach shift once
I have them available. You are quite correct that it is just one
possible API for SW.
> Here is the spec: https://www.w3.org/TR/service-workers/#extension-to-
> extendable-event
Thank you for bringing my question neatly to the key point. With
respect to extensions, the issue is how to implement long polling
within a Service Worker?
While the registering client is around, it's not hard to keep
long-running fetches posted. The real value is to have the service
worker maintain long polling in the background across client closures
and SW stop/start cycles.
"background fetch" is very close to the needed mechanism.
Missing parts:
Timeout
Serial fetch re-posting until "real" completion
With parameters for this re-posting behavior
Inhibit TCP level timeout (you have to do HTTP-level
timeout and failure to be reliable anyway)
I imagine a web application can lose its tab, the SW is stopped, and
the long polling continues quietly at the OS level, just as in a
background fetch it is the long/large fetch which does this.
(BTW, on both mobile Firefox and Android this is very battery
efficient).
Minutes or hours later, a "real" completion can kick the
web application (or perhaps just its SW) back to life.
Based on feedback, I'd be very interested in trying my hand at
a minimalist adjunct to the background fetch document
to support long polling. I think it could be done with
just a few additional options to the background fetch API.
Alternatively, I could write a separate document describing an
extension to support long polling type network functions. The latter
seems like overkill, but have text editor, will travel.
Long polling is a very powerful, very efficient technique
for maintaining telemetry, be it presence, push, sensors,
or any other real time event in either direction. It also
adapts to a wide variety of networks, topologies, and server
and firewall deployments. I hope I can interest this group
in enabling these techniques within Service Workers. Long
Polling and Service Workers seem like a natural fit.
Sincerely,
Andy Valencia
Received on Friday, 7 April 2017 22:00:15 UTC