首页 > 代码库 > engine.io分析1--socket.io的基石
engine.io分析1--socket.io的基石
转载请注明: TheViper http://www.cnblogs.com/TheViper
在上一篇socket.io迁移指南中提到过一点engine.io.engine.io是socket.io 1.x的抽象,核心。
特点:
- Maximum reliability(最大的可靠性)
即使在下列情况下,仍然可以建立连接:
1.代理,或负载均衡。
2.存在个人的防火墙,杀毒软件。
- Minimal client size(最小的客户端)
1.对flash传输方式懒加载
2.去除了冗余的传输方式
- Scalable(可扩展)
对负载均衡友好
- Future proof
- 100% Node.JS core style
1.api都很简单,很少。更多的事交给其他project做
2.全部都用javascript编写,可读性强。
建立engine.io的动机
最主要的动机是确保最可靠的实时通信。与之前的socket.io核心不同,engine.io总是先建立long-polling 连接,然后尝试更好的连接传输方式(websocket).
在之前维护socket.io的时候,我们发现了把websocket,flash socket当做第一传输方式的很多缺点。
比如
1.代理。很多公司的代理会阻塞传输(办公室,教室)。
2.上面说的个人的防火墙,杀毒软件。我们至少发现3中安全防护工具会阻塞传输。
3.云计算平台。很多平台还没有支持websocket协议。
4.有时,不成功的websocket至少需要10秒的时间才能传输,交换数据。这让用户体验降低。
所以说,尽管上面两种传输方式都是正确的,高效的双向传输,还是不能适用于所有场景。
另外值得注意的是socket.io 1.x版本现在支持流传输了,这可以用来做什么呢?看官网上这个有趣的例子就知道了,就是远程桌面,桌面分享。
socket.io 1.x现在(在理论上)还可以更优雅的实现html5视频流直播.作者的想法真的很天花乱坠。
下一篇对其源码进行分析。
engine.io分析1--socket.io的基石