engine.io和socket.io有什么区别?

66

关于node.js,我正在使用socket.io实现客户端应用程序与服务器应用程序之间的实时套接字连接。 我刚听说engine.io。 engine.io是socket.io的替代品吗? 我在engine.io的网站上找不到任何有用的信息。

4个回答

119

Engine.io 是比 Socket.IO 更低层的库。

Engine 相当于 Socket.IO,就像 Connect 相当于 Express。

如果您需要更低层的抽象级别,请使用 Engine.io。如果您需要 WebSocket 抽象级别,请继续使用 Socket.IO。

如果您正在构建基于 Socket.IO 的库/框架,则 Engine.io 对您更有用。

如果您正在构建基于 Socket.IO 的应用程序,则 Socket.IO 对您更有用。


清晰的答案,谢谢!所以如果我需要多路复用,我应该使用Socket.IO。 - Julian

23

socket.io是建立在engine.io之上的。

socket.io是带有许多额外功能的engine.io。

如果您不需要socket.io的全部功能(例如redis存储,组等),只需使用engine。


2
我相信当Socket.IO 1.0发布时,它将建立在Engine.IO之上,但现在(0.9)还没有:https://groups.google.com/d/msg/socket_io/BudZpQiyMbQ/tnm-I-WNJWkJ - bendytree

22
有点晚了:-),但为了后人,我在这里提一下。
除了更低级别之外,最重要的区别之一是socket.io将首先使用websockets,并降级直到找到可以工作的传输方式。另一方面,engine.io将从短轮询开始(并在旁边升级,直到撞墙)。
为什么?
引用:
对于用户来说,WebSocket连接失败可能会导致等待实时应用程序开始交换数据至少需要10秒钟。这对用户体验造成了伤害。
目前(2013年),WebSockets尚未普及(例如旧浏览器、蜂窝网络等),因此最好从XHR开始。
有关更多信息,请参见https://github.com/socketio/engine.ioGoals部分)。

8

Socket.IO v0.9已经过时且有点不稳定,而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则不支持。如果您需要监听不同数据/频道的连接,则需要房间(通过这些模块或自己实现)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接