I'm using platinum-sw and I have a platinum-sw-fetch handler configured to
ignore paths that are in my application's xhr request api. I have
configured a platinum-sw-fetch handler expecting to handle both http GET
and PUT requests by simply passing them through the client using a "fetch"
call.
<platinum-sw-register ... >
<platinum-sw-fetch handler="doNativeFetch" path="/myservice(.*)"
></platinum-sw-fetch>
.
.
.
</platinum-sw-register>
var doNativeFetch = function doNativeFetch(request, values, options) {
console.log('doNativeFetch request', request, values, options);
return fetch(request);
};
This works as expected for GET requests. I see GET request to "/myservice/..."
logged by my custome doNativeFetch handler, the service worker doesn't cache
these requests as expected. Http PUT requests also work (from the clients
perspective) but they do *not* appear to be directed to my doNativeFetch
handler - I never see my "doNativeFetch" log message. This causes a problem
when my server returns an 409 status to a PUT request (in response to a
client's attempt to write state data). My application code expectes to handle
this 409 error when it occurs. But I never see the error when I run with the
platinum-sw service worker enabled. Instead I see the following in Chrome's
console:
(Here is clients http request)
XHR finished loading: PUT "https://abc.example.com/myservice/12345".
(Immediately followed by this, which appears to be the service layer
intercept, no my doNativeFetch handler).
PUT https://abc.example.com/myservice/12345 409 (OK) <<< expected, good so
far!
The FetchEvent for "https://abc.example.com/myservice/12345" resulted in a
network error response: an object that was not a Response was passed to
respondWith() <<< the 409 is not passed-thru, where do I hook into
respondWith?
(Immediately followed by this, which is my client layer code getting a
net::ERR_FAILED
rather than the 409 http response - bad!).
PUT https://abc.example.com/myservice/12345 net::ERR_FAILED <<<< problem,
client doesn't get the 409
... after much digging, I am a loss as to how to proceed with this. The most
basic issue is that my custom platinum-sw-fetch handler is never called for the
PUT request. How to I configure a platinum-sw-fetch handler that will
intercept a PUT request and allow me to pass a 409 error through to the calling
client? Or is that the wrong stategy entirely? Perhaps somewhere I provide a
FetchEvent.respondWith implementation? But where and how?
Follow Polymer on Google+: plus.google.com/107187849809354688692
---
You received this message because you are subscribed to the Google Groups
"Polymer" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/polymer-dev/ae19fc55-5732-4343-b29a-4c8281023a84%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.