一般能想到的有:
- 通过IFrame
- 通过web都做成单页
- 通过sharedworker(也解决不了多浏览器),但是不是所有浏览器都支持,参考limited browser support。
参考:
http://crossbario.com/blog/Websocket-Persistent-Connections/
https://stackoverflow.com/questions/10886910/how-to-maintain-a-websockets-connection- between-pages
最终认为可行方案:
sharedworker支持的浏览器共享单个websocket连接,不支持的,每个页面开一个连接,客户端js配合服务端解决,推送目标和消息处理问题,需要处理如下问题。
- 一个用户的最大websocket连接数量要限制(服务端处理)
- 不同页面的消息处理问题(js处理:页面只处理自己感兴趣的消息)