我正在使用Stomp和Sockjs在我的Spring Boot自包含服务器(3.1.1)中注册websocket,这一切都运行正常。但是,我已经实现了一个ServiceWorker来处理脱机服务,除套接字外,这些服务都可以正常工作。对ws:// localhost / registerSocket的调用会在前端产生此错误:
Firefox无法在ws:// localhost / registerSocket / 351 / 4vevdv79 / websocket建立与服务器的连接。
这是在后端:
ERROR o.s.w.s.s.s.DefaultHandshakeHandler - 由于升级标头无效而导致握手失败:null
在我的ServiceWorker中,我特意将其排除在拦截ws请求之外:
if (uri.indexOf("/registerSocket") === -1) {
event.respondWith(getResponse(event));
}
然而,不可避免的是,升级失败了,它又回归到了旧的彗星风格的polyfill。
有人知道使用ServiceWorker使websockets正常工作的方法吗?
答案 0 :(得分:2)
我刚刚发现Firefox 44中的一个错误,该错误阻止了使用Service Worker时Web Socket连接的工作。
请参阅this bug report。
现在应该修复错误(因为Firefox 44.0.1;它甚至在release notes中)。
答案 1 :(得分:1)
fetch
事件处理程序仅为triggered in response to HTTP requests。打开WebSocket或通过该WebSocket传输数据的请求不会触发fetch
事件处理程序,这意味着服务工作者不会参与其中。