2022 年用于 Node.js 的優(yōu)秀 WebSocket 庫
在這篇文章中,我們將討論2022年你應(yīng)該考慮的八個(gè)Node.js WebSocket庫。
- SockJS[1]
- ws[2]
- Socket.IO[3]
- Faye WebSocket[4]
- SocketCluster[5]
- Sockette[6]
- Feathers[7]
要開始使用這些庫中的任何一個(gè),您需要在本地計(jì)算機(jī)上安裝 npm 和 Node.js。在開始之前,讓我們介紹一下 WebSockets 的一些重要背景。
WebSockets 是如何工作的?
傳統(tǒng)上,客戶端和服務(wù)器通過遵循請求/響應(yīng)周期進(jìn)行通信。但是,WebSockets 允許您以非標(biāo)準(zhǔn)方式在客戶端和服務(wù)器之間進(jìn)行通信。
WebSockets 在服務(wù)器和客戶端之間提供了一個(gè)開放的連接,允許在服務(wù)器和客戶端之間進(jìn)行簡單、即時(shí)的雙向通信,而無需輪詢服務(wù)器。WebSockets 對于構(gòu)建實(shí)時(shí)應(yīng)用程序特別有用,例如實(shí)時(shí)消息傳遞、實(shí)時(shí)流媒體、推送通知、跟蹤、財(cái)務(wù)更新和體育更新等等。
現(xiàn)在我們知道了 WebSockets 的工作原理,讓我們來看看一些 Node.js 庫,您可以使用它們來更輕松地使用 WebSockets 進(jìn)行開發(fā)。
SockJS
SockJS是一個(gè)JavaScript庫,它以類似于本地WebSockets API的方式提供客戶端和服務(wù)器之間的通信。SockJS[8]的功能與sockjs-node[9]形式的服務(wù)器對應(yīng),以及SockJS-client[10],一個(gè)JavaScript客戶端庫。
在撰寫本文時(shí),SockJS 在 GitHub 上有超過 7000 顆星,在 npm 上每周下載近 700 萬次,可以說是 Node.js 的最佳 WebSocket 庫之一。SockJS 遵循 HTML5 WebSocket API 的規(guī)則,提供類似于 WebSocket 的對象。
ws
ws 在 GitHub 上擁有超過 17500 顆星,在 npm 上每周下載量約為 3500 萬次,是可用的最受歡迎的 Node.js WebSocket 庫之一。
ws 是一個(gè)快速、易于使用、文檔齊全且經(jīng)過全面測試的 WebSocket 客戶端和服務(wù)器實(shí)現(xiàn),幾乎支持所有瀏覽器。因此,ws 是許多開發(fā)人員最喜歡的首選庫,這意味著它的社區(qū)是活躍且強(qiáng)大的。
安裝 ws 非常簡單,可以使用以下命令之一完成:
npm install ws
//
npm i ws
要開始使用 ws WebSocket 庫,請查看文檔[11]。
npm install --save-optional bufferutil
上述命令允許你有效地執(zhí)行屏蔽和解除屏蔽WebSocket幀的數(shù)據(jù)有效載荷等操作。
npm install --save-optional utf-8-validate
要有效地檢查消息是否包含有效的 UTF-8,請運(yùn)行上述命令。
Socket.IO
Socket.IO[12] 創(chuàng)建于 2010 年,是一個(gè)流行的 WebSocket 庫,被 Trello 和 Microsoft 等多家大公司使用。Socket.IO 是可靠的,提供負(fù)載平衡、支持二進(jìn)制流、處理代理等功能。
然而,Socket.IO 的主要用途是促進(jìn)瀏覽器和服務(wù)器之間的實(shí)時(shí)、雙向和基于事件的通信。與 ws 一樣,Socket.IO 有一個(gè) Node.js 服務(wù)器和一個(gè) JavaScript 客戶端庫。
此外,Socket.IO還包括一些功能,如支持在有代理或負(fù)載均衡器的情況下建立的連接以及在網(wǎng)絡(luò)上進(jìn)行廣播。WebSocket不支持這兩種活動。
Socket.IO在GitHub上有近55000顆星,每周在npm上有約300萬次下載,是2022年值得關(guān)注的一個(gè)好庫。文檔非常簡單明了,這意味著即使是沒有經(jīng)驗(yàn)的開發(fā)者也應(yīng)該能夠在很少的時(shí)間內(nèi)上手。
Faye WebSocket
Faye WebSocket[13] 是從 Faye 項(xiàng)目中提取出來的,它是一個(gè)多用途的 WebSocket,它可以很容易地在 Node.js 應(yīng)用程序中命令預(yù)先存在的 WebSocket 連接。
Faye WebSocket 僅提供標(biāo)準(zhǔn)的 WebSocket API 和在 Node.js 中構(gòu)建 WebSocket 客戶端和服務(wù)器所需的類。它不提供服務(wù)器本身或提供任何其他抽象。
要安裝Faye WebSocket,請運(yùn)行 npm install faye-WebSocket。Faye項(xiàng)目的README部分提供了入門的必要文檔。
SocketCluster
SocketCluster[14]是一個(gè)高度可擴(kuò)展的框架和實(shí)時(shí)的HTTP服務(wù)器引擎,使你能夠一次性使用所有可用的CPU核心來構(gòu)建多進(jìn)程的實(shí)時(shí)服務(wù)器。有了SocketCluster,后端避免了將Node.js服務(wù)器作為單線程運(yùn)行,工作更有效率,并保持彈性。
SocketCluster框架支持客戶端-服務(wù)器和通過pub/sub通道的群組通信。它使用局域網(wǎng)(LAN)來連接集群的組件。SocketCluster 經(jīng)過優(yōu)化,可以輕松地從故障或斷開連接中恢復(fù),并且不會丟失數(shù)據(jù)。
在撰寫本文時(shí),SocketCluster在GitHub上有近6千顆星,在npm上每周有7千次下載。
Sockette
Sockette[15] 是一個(gè) WebSocket 包裝器,它允許您重用實(shí)例,而無需多次聲明所有事件偵聽器。Sockette 是一個(gè)非常輕量級的庫,根據(jù) GitHub 頁面大約只有 367 個(gè)字節(jié)。如果連接丟失,Sockette 會自動重新連接。
考慮到 Sockette 是一個(gè)小工具,最好在初始化的時(shí)候聲明所有的事件監(jiān)聽器。要安裝并開始使用 Sockette,請運(yùn)行以下命令:
npm install -- save sockette
在撰寫本文時(shí),Sockette 在 GitHub 上大約有 2k 顆星,在 npm 上每周下載量為 9k。該文檔是一個(gè)很好的資源。
Feathers
Feathers[16] 框架使用 Socket.IO 模塊,以便您實(shí)時(shí)接收和提供更新。它還使您可以通過套接字、靈活的插件以及 RESTful API 和資源來控制您的數(shù)據(jù)。
Feathers 提供了自動化和控制的終極組合。使用 Feathers,您可以完全控制 API 的行為方式,同時(shí)仍然受益于提供的工具。
在撰寫本文時(shí),該項(xiàng)目在GitHub上有近14000顆星,在npm上每周有26000次下載。Feathers還包括一個(gè)優(yōu)秀的文檔,并以其輕量級和易于與不同的數(shù)據(jù)庫集成而聞名。
要安裝 Feathers.js 庫,請運(yùn)行以下命令:
npm install -g @feathersjs/cli
原文:https://blog.logrocket.com/top-websocket-libraries-nodejs-2022/
作者:Oyinkansola Awosan