【发布时间】:2016-05-02 06:36:52
【问题描述】:
我正在使用 Stomp 和 Sockjs 向我的 Spring Boot 独立服务器 (3.1.1) 注册一个 websocket,一切正常。但是,我已经实现了一个 ServiceWorker 来处理离线服务,除了套接字之外,它都可以正常工作。对 ws://localhost/registerSocket 的调用在前端产生了这个错误:
Firefox 无法与位于 ws://localhost/registerSocket/351/4vevdv79/websocket 的服务器建立连接。
这在后端:
错误 o.s.w.s.s.s.DefaultHandshakeHandler - 由于升级标头无效,握手失败:null
在我的 ServiceWorker 中,我已明确将其排除在拦截 ws 请求之外:
if (uri.indexOf("/registerSocket") === -1) {
event.respondWith(getResponse(event));
}
然而,ws 升级不可避免地会失败,它会恢复为旧的彗星样式 polyfill。
有人知道让 websocket 与 ServiceWorker 一起正常工作的方法吗?
【问题讨论】:
-
我不确定 Web 套接字连接是否被服务人员拦截,我认为不是。不过,您的 sn-p 中有一个错误,
event.responseWith应该是event.respondWith。您能否尝试在 'fetch' 事件中添加一些日志记录,看看它是否在您打开 Web 套接字时被触发? -
是的。我已经广泛记录了它。我不确定它是否应该拦截它们。根据一些网站,它只应该拦截http请求。也许这只是浏览器实现中的一个错误?
-
我不这么认为,你能分享你的源代码吗?
标签: html websocket stomp sockjs service-worker