core icon indicating copy to clipboard operation
core copied to clipboard

[FEATURE] [实验性] 使用Service Worker来运行Websocket通信层

Open life2015 opened this issue 2 years ago • 6 comments

背景:

随着Chrome和Edge新版的发布,background WebSocket的限制愈发严格。 对于远程连接RTT的监控展示在Tab处于非活跃状态的时候,WebSocket被 pause / kill 的现象变多了。 类似于下图 image

可以考虑使用Service Worker来承接Websocket连接来避免被杀,不过效果如何依然有待测试,未来可以先做POC来验证效果。

Ref: https://stackoverflow.com/questions/60758141/how-to-detect-when-browser-throttles-timers-and-websockets-disconnection-after-a

life2015 avatar Apr 11 '22 08:04 life2015

听起来很棒。

bytemain avatar Apr 11 '22 08:04 bytemain

Service Worker 有个缺点是第一次不会生效,sw 脚本安装以后要刷新一次才可以使用,或者也可以考虑一下 Web Worker

Aaaaash avatar Apr 11 '22 08:04 Aaaaash

Service Worker 有个缺点是第一次不会生效,sw 脚本安装以后要刷新一次才可以使用,或者也可以考虑一下 Web Worker

如果WebWorker可以也是OK的,因为主要是的目的是让WS避免被Chrome的休眠或者throttle掉

life2015 avatar Apr 11 '22 08:04 life2015

https://developer.chrome.com/blog/background_tabs/ 之前的Chrome日志表示WS不会像是其他Timer一样被限制,但是最近一段时间的更新貌似WS也被杀的很厉害

life2015 avatar Apr 11 '22 09:04 life2015

Service Worker 有个缺点是第一次不会生效,sw 脚本安装以后要刷新一次才可以使用,或者也可以考虑一下 Web Worker

这个问题其实也还好,检测到Service Worker没有生效就fallback到传统的WS链路

life2015 avatar Apr 11 '22 09:04 life2015

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Oct 12 '22 18:10 stale[bot]