在這篇文章中,我們將討論2022年你應該考慮的八個Node.js WebSocket庫。
- SockJS
- ws
- Socket.IO
- Faye WebSocket
- SocketCluster
- Sockette
- Feathers
要開始使用這些庫中的任何一個,您需要在本地計算機上安裝 npm 和 Node.js。在開始之前,讓我們介紹一下 WebSockets 的一些重要背景。
WebSockets 是如何工作的?
傳統上,客戶端和伺服器通過遵循請求/響應週期進行通訊。但是,WebSockets 允許您以非標準方式在客戶端和伺服器之間進行通訊。
WebSockets 在伺服器和客戶端之間提供了一個開放的連線,允許在伺服器和客戶端之間進行簡單、即時的雙向通訊,而無需輪詢伺服器。WebSockets 對於構建實時應用程式特別有用,例如實時訊息傳遞、實時流媒體、推送通知、跟蹤、財務更新和體育更新等等。
現在我們知道了 WebSockets 的工作原理,讓我們來看看一些 Node.js 庫,您可以使用它們來更輕鬆地使用 WebSockets 進行開發。
SockJS
SockJS是一個JavaScript庫,它以類似於本地WebSockets API的方式提供客戶端和伺服器之間的通訊。SockJS的功能與sockjs-node形式的伺服器對應,以及SockJS-client,一個JavaScript客戶端庫。
在撰寫本文時,SockJS 在 GitHub 上有超過 7000 顆星,在 npm 上每週下載近 700 萬次,可以說是 Node.js 的最佳 WebSocket 庫之一。 SockJS 遵循 HTML5 WebSocket API 的規則,提供類似於 WebSocket 的物件。
ws
ws 在 GitHub 上擁有超過 17500 顆星,在 npm 上每週下載量約為 3500 萬次,是可用的最受歡迎的 Node.js WebSocket 庫之一。
ws 是一個快速、易於使用、文件齊全且經過全面測試的 WebSocket 客戶端和伺服器實現,幾乎支援所有瀏覽器。因此,ws 是許多開發人員最喜歡的首選庫,這意味著它的社群是活躍且強大的。
安裝 ws 非常簡單,可以使用以下命令之一完成:
npm install ws
//
npm i ws
要開始使用 ws WebSocket 庫,請檢視文件。
npm install --save-optional bufferutil
上述命令允許你有效地執行遮蔽和解除遮蔽WebSocket幀的資料有效載荷等操作。
npm install --save-optional utf-8-validate
要有效地檢查訊息是否包含有效的 UTF-8,請執行上述命令。
Socket.IO
Socket.IO 建立於 2010 年,是一個流行的 WebSocket 庫,被 Trello 和 Microsoft 等多家大公司使用。 Socket.IO 是可靠的,提供負載平衡、支援二進位制流、處理代理等功能。
然而,Socket.IO 的主要用途是促進瀏覽器和伺服器之間的實時、雙向和基於事件的通訊。與 ws 一樣,Socket.IO 有一個 Node.js 伺服器和一個 JavaScript 客戶端庫。
此外,Socket.IO還包括一些功能,如支援在有代理或負載均衡器的情況下建立的連線以及在網路上進行廣播。WebSocket不支援這兩種活動。
Socket.IO在GitHub上有近55000顆星,每週在npm上有約300萬次下載,是2022年值得關注的一個好庫。文件非常簡單明瞭,這意味著即使是沒有經驗的開發者也應該能夠在很少的時間內上手。
Faye WebSocket
Faye WebSocket 是從 Faye 專案中提取出來的,它是一個多用途的 WebSocket,它可以很容易地在 Node.js 應用程式中命令預先存在的 WebSocket 連線。
Faye WebSocket 僅提供標準的 WebSocket API 和在 Node.js 中構建 WebSocket 客戶端和伺服器所需的類。它不提供伺服器本身或提供任何其他抽象。
要安裝Faye WebSocket,請執行 npm install faye-WebSocket
。Faye專案的README部分提供了入門的必要文件。
SocketCluster
SocketCluster是一個高度可擴充套件的框架和實時的HTTP伺服器引擎,使你能夠一次性使用所有可用的CPU核心來構建多程式的實時伺服器。有了SocketCluster,後端避免了將Node.js伺服器作為單執行緒執行,工作更有效率,並保持彈性。
SocketCluster框架支援客戶端-伺服器和通過pub/sub通道的群組通訊。它使用區域網(LAN)來連線叢集的元件。SocketCluster 經過優化,可以輕鬆地從故障或斷開連線中恢復,並且不會丟失資料。
在撰寫本文時,SocketCluster在GitHub上有近6千顆星,在npm上每週有7千次下載。
Sockette
Sockette 是一個 WebSocket 包裝器,它允許您重用例項,而無需多次宣告所有事件偵聽器。 Sockette 是一個非常輕量級的庫,根據 GitHub 頁面大約只有 367 個位元組。如果連線丟失,Sockette 會自動重新連線。
考慮到 Sockette 是一個小工具,最好在初始化的時候宣告所有的事件監聽器。要安裝並開始使用 Sockette,請執行以下命令:
npm install -- save sockette
在撰寫本文時,Sockette 在 GitHub 上大約有 2k 顆星,在 npm 上每週下載量為 9k。該文件是一個很好的資源。
Feathers
Feathers 框架使用 Socket.IO 模組,以便您實時接收和提供更新。它還使您可以通過套接字、靈活的外掛以及 RESTful API 和資源來控制您的資料。
Feathers 提供了自動化和控制的終極組合。使用 Feathers,您可以完全控制 API 的行為方式,同時仍然受益於提供的工具。
在撰寫本文時,該專案在GitHub上有近14000顆星,在npm上每週有26000次下載。Feathers還包括一個優秀的文件,並以其輕量級和易於與不同的資料庫整合而聞名。
要安裝 Feathers.js 庫,請執行以下命令:
npm install -g @feathersjs/cli