2022 年用于 Node.js 的優秀 WebSocket 庫
在這篇文章中,我們將討論2022年你應該考慮的八個Node.js WebSocket庫。
- SockJS[1]
- ws[2]
- Socket.IO[3]
- Faye WebSocket[4]
- SocketCluster[5]
- Sockette[6]
- Feathers[7]
要開始使用這些庫中的任何一個,您需要在本地計算機上安裝 npm 和 Node.js。在開始之前,讓我們介紹一下 WebSockets 的一些重要背景。
WebSockets 是如何工作的?
傳統上,客戶端和服務器通過遵循請求/響應周期進行通信。但是,WebSockets 允許您以非標準方式在客戶端和服務器之間進行通信。
WebSockets 在服務器和客戶端之間提供了一個開放的連接,允許在服務器和客戶端之間進行簡單、即時的雙向通信,而無需輪詢服務器。WebSockets 對于構建實時應用程序特別有用,例如實時消息傳遞、實時流媒體、推送通知、跟蹤、財務更新和體育更新等等。
現在我們知道了 WebSockets 的工作原理,讓我們來看看一些 Node.js 庫,您可以使用它們來更輕松地使用 WebSockets 進行開發。
SockJS
SockJS是一個JavaScript庫,它以類似于本地WebSockets API的方式提供客戶端和服務器之間的通信。SockJS[8]的功能與sockjs-node[9]形式的服務器對應,以及SockJS-client[10],一個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 庫,請查看文檔[11]。
npm install --save-optional bufferutil
上述命令允許你有效地執行屏蔽和解除屏蔽WebSocket幀的數據有效載荷等操作。
npm install --save-optional utf-8-validate
要有效地檢查消息是否包含有效的 UTF-8,請運行上述命令。
Socket.IO

Socket.IO[12] 創建于 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[13] 是從 Faye 項目中提取出來的,它是一個多用途的 WebSocket,它可以很容易地在 Node.js 應用程序中命令預先存在的 WebSocket 連接。
Faye WebSocket 僅提供標準的 WebSocket API 和在 Node.js 中構建 WebSocket 客戶端和服務器所需的類。它不提供服務器本身或提供任何其他抽象。
要安裝Faye WebSocket,請運行 npm install faye-WebSocket。Faye項目的README部分提供了入門的必要文檔。
SocketCluster

SocketCluster[14]是一個高度可擴展的框架和實時的HTTP服務器引擎,使你能夠一次性使用所有可用的CPU核心來構建多進程的實時服務器。有了SocketCluster,后端避免了將Node.js服務器作為單線程運行,工作更有效率,并保持彈性。
SocketCluster框架支持客戶端-服務器和通過pub/sub通道的群組通信。它使用局域網(LAN)來連接集群的組件。SocketCluster 經過優化,可以輕松地從故障或斷開連接中恢復,并且不會丟失數據。
在撰寫本文時,SocketCluster在GitHub上有近6千顆星,在npm上每周有7千次下載。
Sockette
Sockette[15] 是一個 WebSocket 包裝器,它允許您重用實例,而無需多次聲明所有事件偵聽器。Sockette 是一個非常輕量級的庫,根據 GitHub 頁面大約只有 367 個字節。如果連接丟失,Sockette 會自動重新連接。
考慮到 Sockette 是一個小工具,最好在初始化的時候聲明所有的事件監聽器。要安裝并開始使用 Sockette,請運行以下命令:
npm install -- save sockette
在撰寫本文時,Sockette 在 GitHub 上大約有 2k 顆星,在 npm 上每周下載量為 9k。該文檔是一個很好的資源。
Feathers

Feathers[16] 框架使用 Socket.IO 模塊,以便您實時接收和提供更新。它還使您可以通過套接字、靈活的插件以及 RESTful API 和資源來控制您的數據。
Feathers 提供了自動化和控制的終極組合。使用 Feathers,您可以完全控制 API 的行為方式,同時仍然受益于提供的工具。
在撰寫本文時,該項目在GitHub上有近14000顆星,在npm上每周有26000次下載。Feathers還包括一個優秀的文檔,并以其輕量級和易于與不同的數據庫集成而聞名。
要安裝 Feathers.js 庫,請運行以下命令:
npm install -g @feathersjs/cli
原文:https://blog.logrocket.com/top-websocket-libraries-nodejs-2022/
作者:Oyinkansola Awosan


























