engine.io 和 socket.io 有啥区别?
Posted
技术标签:
【中文标题】engine.io 和 socket.io 有啥区别?【英文标题】:What's the difference between engine.io and socket.io?engine.io 和 socket.io 有什么区别? 【发布时间】:2012-01-22 11:19:28 【问题描述】:如果此问题重复,请纠正我。 关于 node.js,我使用 socket.io 进行从客户端应用程序到服务器应用程序的实时套接字连接。 我刚听说engine.io,engine.io 是socket.io 的替代品吗? 我在engine.io 网站上找不到任何有用的信息
提前致谢
【问题讨论】:
【参考方案1】:游戏有点晚了 :-),但我会在这里提及它以供后人参考。
除了“较低级别”之外,最重要的区别之一是 socket.io 将首先从 websockets 开始并降级,直到找到可以工作的传输。另一方面,engine.io 将从短轮询开始(并在侧面升级,直到撞墙)。
为什么?
从用户的角度来看,一个不成功的 WebSocket 连接可以转化为等待实时应用程序开始交换数据的至少 10 秒。这在感知上会损害用户体验。
目前(2013 年),websockets 还没有普及(例如旧版浏览器、蜂窝网络等),所以从 XHR 1st 开始是明智的。
有关详细信息,请参阅https://github.com/socketio/engine.io(Goals 部分)。
【讨论】:
【参考方案2】:engine.io 是比 socket.io 低级的库。
Engine 之于 Socket.IO 就像 Connect 之于 Express。
如果您想要较低级别的抽象,请使用 engine.io。如果你想要一个 websocket 抽象,请继续使用 socket.io。
如果您在 socket.io 之上构建库/框架,您会更感兴趣 engine.io。
如果您在 socket.io 之上构建应用程序,您会更感兴趣 socket.io。
【讨论】:
感谢您的链接,正是我所需要的:D 明确答复,谢谢!所以如果我需要多路复用,我应该使用 Socket.IO【参考方案3】: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 不支持。如果您有连接侦听不同的数据/通道,您将需要房间(通过这些模块或您自己的实现)。
【讨论】:
您的意思是“Socket.IO 支持房间,而 Engine.IO 不支持”(我们可以在您的博客上看到)?【参考方案4】:socket.io 建立在 engine.io 之上。
socket.io 是有花里胡哨的 engine.io。
如果您不需要 socket.io 的所有内容(redis 存储、组等),请使用引擎。
【讨论】:
我相信当 Socket.IO 1.0 出现时,它将基于 Engine.IO,但现在(0.9)不是:groups.google.com/d/msg/socket_io/BudZpQiyMbQ/tnm-I-WNJWkJ以上是关于engine.io 和 socket.io 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
客户端正在使用不受支持的 Socket.IO 或 Engine.IO 协议版本错误