2011-12-17 38 views
41

如果此问题重复,请纠正我的错误。 关于node.js,我使用socket.io实现了从客户端应用程序到服务器应用程序的实时套接字连接。 我刚刚听说engine.io,是engine.io的一个替代socket.io? 我找不到engine.io网站上的任何有用的信息提前engine.io和socket.io有什么区别?

感谢

回答

81

engine.io比socket.io一个较低的水平库。

引擎是连接到Express的Socket.IO。

如果您想要较低级别的抽象,请使用engine.io。如果你想要一个websocket抽象,继续使用socket.io。

如果您在socket.io之上构建库/框架,则engine.io对您更感兴趣。

如果你在socket.io之上构建一个应用程序,socket.io对你更感兴趣。

+0

感谢您的链接,正是我需要的:D – 2011-12-17 14:06:38

+0

明确回答,谢谢!因此,如果我需要多路复用,我应该使用Socket.IO – Julian 2016-06-28 20:49:23

18

socket.io构建在engine.io之上。

socket.io是engine.io与花里胡哨。

如果你不需要的一切socket.io有(redis商店,组等)只是使用引擎。

+1

我相信,当Socket.IO 1.0出来时,它将构建在Engine.IO上,但现在(0.9)不是:https://groups.google.com/d/msg/socket_io/BudZpQiyMbQ/tnm-I-WNJWkJ – bendytree 2013-08-07 20:14:55

13

有点迟到:-),但我会在这里提到它的后代。

除了“更低级别”之外,其中一个最重要的区别是socket.io将先从websocket开始&降级,直到找到可以工作的传输为止。另一方面,engine.io将从短轮询开始(并且在侧面升级直到碰到墙壁)。

为什么?

从用户角度来看,一个不成功的WebSocket连接可能会在等待实时应用程序开始交换数据时转换至少10秒。这在感知上损害了用户体验。

目前(2013年),websockets尚未普及(如旧版浏览器,蜂窝网络等),所以从XHR 1st开始就很明智。

有关更多信息,请参见https://github.com/LearnBoost/engine.io(目标部分)。

7

Socket.IO v0.9已经过时了,有点bug,Engine.IO是临时的继承者。 Socket.IO v1.0(即将发布)将使用Engine.IO并远远优于v0.9。

在我的测试中,Engine.IO出现比Socket.IO V0.9有更好的表现,看到了比较:https://medium.com/node-js-javascript/b63bfca0539

Socket.IO尝试一段时间后重新连接丢失后,而Engine.IO才不是。

Socket.IO支持房间,而Engine.IO不支持。如果你有连接监听不同的数据/频道,你需要房间(通过这些模块或你自己的实现)。