即时通信与浏览器多TAB通信
- blankyao - 搜索研发部官方博客浏览器与服务器端的即时通信技术解决了在线聊天等产品中涉及到的复杂网络环境下的问题;采用多tab通信技术来处理现代浏览器的跨页面通信,分析特定疑难问题的技术解决方案. 消息推送:通过基于web server的长连接技术实现. 前端多Tab数据交互:借助Flash的Local Connection和ShareObject技术实现.
摘要
浏览器与服务器端的即时通信技术解决了在线聊天等产品中涉及到的复杂网络环境下的问题;采用多tab通信技术来处理现代浏览器的跨页面通信,分析特定疑难问题的技术解决方案。
TAG
即时通信,多tab通信
内容
关键技术
Client-Server交互模型
分层设计
1.多Tab中始终维持一个特立独行的Tab
2.多Tab间互相通信:支持广播、组播、单播
3.跨浏览器数据存储
4.跨域发送Http请求
利用flash的LocalConnection的唯一性保证客户端多个浏览器多个tab之间,有且只有一个页面与服务端交互,称之为server tab。
只有server tab会与Lightthy通信
当server tab接收到lightthy的消息后,从本地存储SharedObject中获取其他tab的id,然后通过LocalConnection传递给他们。
问题:
解决方案:
问题:
解决方案:
问题:
为了减少服务端压力,设计的初衷就是前端要在多个浏览器窗口中挑出一个独特的窗口来发起listen。Server Tab的概念保证了前端能生成一个唯一的独特窗口,用于发起listen。实现原理是利用LocalConnection的connect name唯一性,并用轮询connect来保证只要原来发起listen的窗口一旦断掉,即能自动重新挑选一个窗口来作为Server Tab,并发起listen。但是我们仍然遇到了外壳浏览器下面一些诡异的问题,窗口被缓存成假死状态。导致这个机制不能很好的运行下去。
解决方案:
下面是一个窗口打开后,在本地注册的流程