如果此问题重复,请纠正我。 关于node.js,我使用socket.io进行从客户端应用程序到服务器应用程序的实时套接字连接。 我刚刚听说过engine.io,engine.io是socket.io的替代品吗? 我在engine.io网站上找不到任何有用的信息
提前致谢
答案 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则不支持。如果你有连接收听不同的数据/频道,你需要房间(通过这些模块或你自己的实现)。