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

时间:2011-12-17 04:08:20

标签: node.js socket.io

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

提前致谢

4 个答案:

答案 0 :(得分:91)

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

  

引擎是Socket.IO什么是连接到Express。

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

如果你在socket.io之上构建一个库/框架,那么

engine.io对你更感兴趣。

如果您在socket.io上构建应用程序,那么

socket.io对您更感兴趣。

答案 1 :(得分:20)

socket.io建立在engine.io。

之上

socket.io是带有铃声和口哨声的engine.io。

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

答案 2 :(得分:17)

游戏有点晚了:-),但我会在这里为后人提及。

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

为什么?

  

从用户的角度来看,不成功的WebSocket连接可以在至少等待实时应用程序开始交换数据的10秒内进行转换。这会伤害用户体验。

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

有关详细信息,请参阅https://github.com/LearnBoost/engine.io(目标部分)。

答案 3 :(得分: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则不支持。如果你有连接收听不同的数据/频道,你需要房间(通过这些模块或你自己的实现)。