2011-12-17 65 views
41

如果此問題重複,請糾正我的錯誤。 關於node.js,我使用socket.io實現了從客戶端應用程序到服務器應用程序的實時套接字連接。 我剛剛聽說engine.io,是engine.io的一個替代socket.io? 我找不到engine.io網站上的任何有用的信息提前engine.io和socket.io有什麼區別?

感謝

回答

81

engine.io比socket.io一個較低的水平庫。

引擎是連接到Express的Socket.IO。

如果您想要較低級別的抽象,請使用engine.io。如果你想要一個websocket抽象,繼續使用socket.io。

如果您在socket.io之上構建庫/框架,則engine.io對您更感興趣。

如果你在socket.io之上構建一個應用程序,socket.io對你更感興趣。

+0

感謝您的鏈接,正是我需要的:D – 2011-12-17 14:06:38

+0

明確回答,謝謝!因此,如果我需要多路複用,我應該使用Socket.IO – Julian 2016-06-28 20:49:23

18

socket.io構建在engine.io之上。

socket.io是engine.io與花裏胡哨。

如果你不需要的一切socket.io有(redis商店,組等)只是使用引擎。

+1

我相信,當Socket.IO 1.0出來時,它將構建在Engine.IO上,但現在(0.9)不是:https://groups.google.com/d/msg/socket_io/BudZpQiyMbQ/tnm-I-WNJWkJ – bendytree 2013-08-07 20:14:55

13

有點遲到:-),但我會在這裏提到它的後代。

除了「更低級別」之外,其中一個最重要的區別是socket.io將先從websocket開始&降級,直到找到可以工作的傳輸爲止。另一方面,engine.io將從短輪詢開始(並且在側面升級直到碰到牆壁)。

爲什麼?

從用戶角度來看,一個不成功的WebSocket連接可能會在等待實時應用程序開始交換數據時轉換至少10秒。這在感知上損害了用戶體驗。

目前(2013年),websockets尚未普及(如舊版瀏覽器,蜂窩網絡等),所以從XHR 1st開始就很明智。

有關更多信息,請參見https://github.com/LearnBoost/engine.io(目標部分)。

7

Socket.IO v0.9已經過時了,有點bug,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不支持。如果你有連接監聽不同的數據/頻道,你需要房間(通過這些模塊或你自己的實現)。