【问题标题】: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 网站上找不到任何有用的信息

提前致谢

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    游戏有点晚了 :-),但我会在这里提及它以供后人参考。

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

    为什么?

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

    目前(2013 年),websockets 还没有普及(例如旧版浏览器、蜂窝网络等),所以从 XHR 1st 开始是明智的。

    有关详细信息,请参阅https://github.com/socketio/engine.ioGoals 部分)。

    【讨论】:

      【解决方案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 存储、组等),请使用引擎。

      【讨论】:

      猜你喜欢
      • 2016-06-14
      • 2018-06-12
      • 2015-04-24
      • 2012-03-25
      • 2020-11-27
      • 2014-08-17
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      相关资源
      最近更新 更多