如何在 Express.js 中使用 WebSocket?

AI 编程助手,豆包旗下的编程助手,提供智能补全、智能预测、智能问答等能力,节省开发时间,释放脑海中的创造力,支持 VSCode,点击体验 AI

WebSocket 协议是一种基于 TCP 协议的双向通信协议,与 HTTP 相比,它更加轻量级、更快速,也更加灵活。Express.js 是一个非常流行的 Node.js 服务器框架,它可以用来构建 Web 应用程序、API 和服务。本文将探讨如何在 Express.js 中使用 WebSocket。

在 Express.js 中安装 WebSocket

Express.js 并不提供对 WebSocket 的原生支持,我们需要安装一个 WebSocket 库。一个流行的 WebSocket 库是 ws,它提供了 WebSocket API 的实现,可以轻松地与 Express.js 集成。可以使用 npm 包管理器安装:

--- ------- --

在 Express.js 中启用 WebSocket

要在 Express.js 中启用 WebSocket,我们需要在服务器上创建一个 WebSocket 服务器实例,并将其连接到 Express.js 应用程序。这可以通过以下代码完成:

----- ------- - -------------------
----- --------- - --------------

----- --- - ----------

-- -- --------- -----
----- --- - --- ------------------ ----- ---- ---

-- - --------- ------ ---------- ----
----------- ---- ---- -- -
  -- -----------
---

-- -- ---------- ----
---------------- -- -- -
  ----------------------- -----------
---

在上面的代码中,我们通过创建一个 WebSocket.Server 实例来启动 WebSocket 服务器,然后使用 app.ws 方法将服务器连接到 Express.js 应用程序。第一个参数是 URL 路径模式,它指定应该与 WebSocket 服务器实例连接的 Express.js 路由。在本例中,'/' 表示默认路径,将匹配所有 WebSocket 连接。

在 Express.js 中接收和发送 WebSocket 消息

一旦我们启用了 WebSocket,就可以接收和发送消息了。当有客户端通过 WebSocket 连接到 Express.js 服务器时,我们可以发送欢迎消息给客户端,并记录其连接。WebSocket 连接是一个双向通信通道,客户端和服务器可以互相发送消息。

----- ------- - -------------------
----- --------- - --------------

----- --- - ----------

----- --- - --- ------------------ ----- ---- ---

----------- ---- ---- -- -
  -----------------------

  -- ----------
  ------------- --------- -------

  ---------------- ----- -- -
    -------------------------------
  ---
---

---------------- -- -- -
  ----------------------- ------------
---

在上面的代码中,我们使用 ws.send 方法向客户端发送欢迎消息,然后使用 ws.on('message', ...) 方法接收客户端发送的消息。如果客户端发送了消息,我们将在服务器控制台上记录消息内容。

在 Express.js 中广播 WebSocket 消息

在 WebSocket 连接建立后,我们可以使用 WebSocket 服务器实例的 wss.clients 属性获取所有已连接的客户端。通过对每个客户端调用 client.send 方法,我们可以将同一消息发送给所有客户端,从而实现消息广播。

----- ------- - -------------------
----- --------- - --------------

----- --- - ----------

----- --- - --- ------------------ ----- ---- ---

----------- ---- ---- -- -
  -----------------------

  ------------- --------- -------

  ---------------- ----- -- -
    --------------------------------
    ---------------
  ---
---

-------- -------------- -
  ---------------------------- -- -
    -- ------------------ --- --------------- -
      ----------------------------
    -
  ---
-

---------------- -- -- -
  ----------------------- ------------
---

在上面的代码中,我们定义了一个 broadcast 函数,该函数迭代所有已连接的客户端,并仅对状态为 WebSocket.OPEN 的客户端调用 client.send,以将消息广播给所有客户端。

结论

本文介绍了如何在 Express.js 中使用 WebSocket。我们安装了 ws 库并在 Express.js 服务器上创建 WebSocket 服务器实例。我们使用 app.ws 方法将服务器连接到 Express.js 应用程序,并使用 ws.send 方法接收和发送消息。同时,我们还学习了如何广播一条消息,并将其发送给所有客户端。WebSocket 是一种强大的双向通信协议,在构建实时 Web 应用程序时使用它。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/672062f52e7021665e020136


猜你喜欢

  • PM2 多个 Node.js 应用程序的管理技巧

    简介 PM2 是一款常用的 Node.js 应用程序管理工具,能够对多个 Node.js 应用程序进行管理,提高应用程序的稳定性和性能。本文将介绍如何使用 PM2 进行多个 Node.js 应用程序的...

    10 天前
  • Next.js 中如何优化首屏加载速度

    在现代 Web 应用程序中,快速的页面加载速度对于用户体验和用户保留非常重要。Next.js 提供了一系列优化首屏加载速度的策略,可以大幅提高您的应用程序的性能和用户体验。

    10 天前
  • 解决 Socket.io 连接被防火墙阻止的问题

    什么是 Socket.io Socket.io 是一种实时通信库,它使用 WebSocket 协议来实现双向通信。它可以工作在不同的环境中,包括浏览器和服务器。Socket.io 非常适合于实时的应用...

    10 天前
  • Server-Sent Events:响应其它SSE事件的解决方案

    前言:Server-Sent Events(SSE)是一种可以从服务器推送数据到客户端的技术,它与WebSocket相似,但仅支持一种协议——HTTP(和 HTTPS)。

    10 天前
  • 如何在 Hapi 框架中使用 HTTPS 协议?

    在现代 Web 开发中,使用 HTTPS 协议来保护用户通信是一个必须的步骤。Hapi 是 Node.js 中一个流行的 Web 框架,具有灵活性和强大的插件系统。

    10 天前
  • Docker 容器中配置 Nginx 负载均衡

    在前端开发中,我们经常需要使用多个服务器来部署网站或者应用程序。为了实现高可用和负载均衡,我们需要使用Nginx作为反向代理,将请求分发到多个服务器上。在Docker容器中使用Nginx实现负载均衡也...

    10 天前
  • 如何使用 Web Components 实现 Web3.0 应用

    Web Components 是一种由 Web 标准委员会提出的技术,可用于创造可重复使用的定制元素和用户界面部件。使用 Web Components,Web 开发人员可以轻松地在不同的 Web 应用...

    10 天前
  • ES2020 中的新特性:Dynamic Import

    ES2020 是 ECMAScript(即 JavaScript)的最新规范版本,于2020年6月发布。该版本在语言的核心基础上引入了一些新特性,其中一个关键特性就是 Dynamic Import,也...

    10 天前
  • 无服务器架构中的费用和成本优化

    在 cloud computing 的时代,随着无服务器的兴起和发展,越来越多的应用程序和服务开始采用无服务器架构来开发和部署。无服务器计算的主要优点之一是弹性伸缩。

    10 天前
  • Headless CMS vs 内容管理框架:优劣比较

    在现代前端开发中,内容管理成为了一个很重要的部分。它是至关重要的,因为一份好的内容可以吸引用户并增加网站的流量。而 Headless CMS 和 内容管理框架 是两种流行的解决方案。

    10 天前
  • 如何使用 Node.js 创建虚拟机

    Node.js 是一款开源的 JavaScript 运行环境,它是基于 Google Chrome 的 V8 JavaScript 引擎构建的。它可以在服务器端执行 JavaScript 代码,因此在...

    10 天前
  • CSS Reset 对引用样式的影响及解决方式

    在前端开发中,通常会使用 CSS Reset 工具来重置样式,以保证不同浏览器对页面的渲染效果一致。但是,使用 CSS Reset 工具也可能会对页面中引用的样式造成一定的影响。

    10 天前
  • JavaScript Promise 中的内存泄漏问题

    Promise 是处理异步操作的一种方式,在前端开发中被广泛应用。然而,当 Promise 处理过程过长或者使用不当时,就有可能会造成内存泄漏的问题。本文将介绍Promise中的内存泄漏问题,以及如何...

    10 天前
  • 如何在 Angular 中使用 Firebase 实现使用者身份验证

    Firebase 是 Google 推出的后端云服务平台,提供了多种功能,其中包括用户身份验证。在前端开发中,使用 Firebase 可以方便地实现用户身份验证,并且不需要自己搭建后端服务器。

    10 天前
  • 在 ES12 中使用模板字面量标记处理多语言字符串

    在现代化的前端开发中,多语言的支持已成为一个重要的需求。对于那些需要国际化的应用程序来说,实现多语言功能是至关重要的。ES12 提供了模板字面量标记来处理多语言字符串,使得开发者可以使用简单、清晰的语...

    10 天前
  • 使用 Flexbox 改进移动端 UI 设计

    随着移动端的普及,越来越多的用户使用智能手机来浏览网页。移动设备的屏幕尺寸较小,设计师和开发者需要思考如何在有限的屏幕空间上呈现更多的信息,同时保持页面的美观和易用性。

    10 天前
  • 如何在 React Native 应用中添加 React Navigation

    React Navigation 是一个非常流行的 React Native 应用导航库。它提供了一个灵活的导航 API,能够轻松构建和管理多层嵌套的堆栈导航和标签导航等等。

    10 天前
  • 快速上手 RESTful API 开发的教程

    随着移动互联网的逐渐普及,Web API 的需求越来越大。RESTful API 是当前最受欢迎的 Web API,它具有基于 HTTP 协议、采用标准的 URI 和 HTTP 方法等多方面的特点,使...

    10 天前
  • Babel 编译的代码出现 undefined 如何处理?

    在使用 Babel 对 JavaScript 代码进行编译的时候,有时会遇到一些 undefined 的问题。这种问题通常是由于 Babel 编译后的代码中存在 ES6 或 ES7 新特性,而当前的运...

    10 天前
  • 如何使用 CSS Flexbox 和 Grid 为您的网站增加无障碍性

    在如今互联网高度发达的时代,网站无障碍性已经成为一种日益重要的问题。无障碍性可以为那些使用辅助技术的用户提供极大方便,让他们更加轻松地使用网站。CSS Flexbox 和 Grid 技术正好可以帮助我...

    10 天前

相关推荐

    暂无文章