在这篇文章中,咱们将探讨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