繁体   English   中英

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

[英]What's the difference between engine.io and socket.io?

如果这个问题是重复的,请纠正我。 关于 node.js,我使用 socket.io 进行从客户端应用程序到服务器应用程序的实时套接字连接。 我刚刚听说engine.io,engine.io 是socket.io 的替代品吗? 我在 engine.io 网站上找不到任何有用的信息

提前致谢

engine.io是一个比 socket.io 低级的库。

Engine 之于 Socket.IO 就像 Connect 之于 Express。

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

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

如果您在 socket.io 之上构建应用程序,那么您对 ​​socket.io 更感兴趣。

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

socket.io 是带有花里胡哨的engine.io。

如果您不需要 socket.io 的所有内容(redis 存储、组等),请使用引擎。

游戏有点晚了:-),但我会在这里提到它以供后代使用。

除了“较低级别”之外,最重要的区别之一是 socket.io 将首先从 websockets 开始并降级,直到找到可以工作的传输。 另一方面,engine.io 将从短轮询开始(并在侧面升级,直到碰壁)。

为什么?

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

目前(2013 年),websockets 尚未普及(例如较旧的浏览器、蜂窝网络等),因此从 XHR 1st 开始是明智之举。

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

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 不支持。 如果您有连接侦听不同的数据/通道,您将需要房间(通过这些模块或您自己的实现)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM