首页 > 代码库 > 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的基石