【发布时间】:2012-01-22 11:19:28
【问题描述】:
如果此问题重复,请纠正我。 关于 node.js,我使用 socket.io 进行从客户端应用程序到服务器应用程序的实时套接字连接。 我刚听说engine.io,engine.io 是socket.io 的替代品吗? 我在engine.io 网站上找不到任何有用的信息
提前致谢
【问题讨论】:
如果此问题重复,请纠正我。 关于 node.js,我使用 socket.io 进行从客户端应用程序到服务器应用程序的实时套接字连接。 我刚听说engine.io,engine.io 是socket.io 的替代品吗? 我在engine.io 网站上找不到任何有用的信息
提前致谢
【问题讨论】:
游戏有点晚了 :-),但我会在这里提及它以供后人参考。
除了“较低级别”之外,最重要的区别之一是 socket.io 将首先从 websockets 开始并降级,直到找到可以工作的传输。另一方面,engine.io 将从短轮询开始(并在侧面升级,直到撞墙)。
为什么?
从用户的角度来看,一个不成功的 WebSocket 连接可以转化为等待实时应用程序开始交换数据的至少 10 秒。这在感知上会损害用户体验。
目前(2013 年),websockets 还没有普及(例如旧版浏览器、蜂窝网络等),所以从 XHR 1st 开始是明智的。
有关详细信息,请参阅https://github.com/socketio/engine.io(Goals 部分)。
【讨论】:
engine.io 是比 socket.io 低级的库。
Engine 之于 Socket.IO 就像 Connect 之于 Express。
如果您想要较低级别的抽象,请使用 engine.io。如果你想要一个 websocket 抽象,请继续使用 socket.io。
如果您在 socket.io 之上构建库/框架,您会更感兴趣 engine.io。
如果您在 socket.io 之上构建应用程序,您会更感兴趣 socket.io。
【讨论】:
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 之上。
socket.io 是有花里胡哨的 engine.io。
如果您不需要 socket.io 的所有内容(redis 存储、组等),请使用引擎。
【讨论】: