I know you can create WebSocket connections from within a Service Worker itself; my question is more whether or not you can use a WebSocket from your app as normal and have
I think one should use fetch
for the first load of the page, so its data can be cached and returned by the service worker when you're offline.
So you initiate the websocket connection only if you're online. No need to cache data then.
And you fallback in saving message in cache in the app side when it fails to send via socket.
It's not possible for a service worker to intercept Web Socket traffic.
The service worker's fetch
event is triggered only for controlled clients' HTTPS requests, and the message
event is triggered only for postMessage()
requests from clients.
While there is an HTTP handshake when initiating a Web Socket connection, that handshake does not trigger a fetch
handler, and neither does the actual traffic sent once the connection has been established.