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

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

提前致谢

engine.io是比socket.io更低级别的库。

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

如果你想要更低层次的抽象,使用engine.io。 如果你想要一个websocket抽象,继续使用socket.io。

如果你正在socket.io之上构build一个库/框架,engine.io对你更感兴趣。

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

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

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

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

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

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

为什么?

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

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

请参阅https://github.com/LearnBoost/engine.io (目标部分)了解更多信息。

Socket.IO v0.9已经过时了,有点bug,Engine.IO是临时的inheritance者。 Socket.IO v1.0(即将发布)将使用Engine.IO,比v0.9好很多。

在我的testing中,Engine.IO似乎比Socket.IO v0.9更好,请参阅比较: https ://medium.com/node-js-javascript/b63bfca0539

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

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