在 Express.js 中如何使用 WebSocket?

在现代 web 应用中,实时数据交互已经成为了必不可少的一环。而 WebSocket 作为 HTML5 引入的标准,能够为实时数据交互提供强大的支持,因此得到了广泛的应用。在这篇文章中,我们将会讲解如何在 Express.js 中使用 WebSocket。

WebSocket 简介

WebSocket 是一种在单个 TCP 连接上进行全双工通信的应用层协议,允许客户端和服务器端进行实时数据交互。相比传统的 HTTP 请求-响应模式,WebSocket 更加高效和实时。WebSocket 的使用需要客户端和服务器端都支持,而且客户端和服务器端的接口要遵循一定的协议。

开始使用 WebSocket

在 Express.js 中使用 WebSocket 首先需要安装相应的包。常用的 WebSocket 包有 wssocket.io,本文使用 ws 作为演示。

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

在安装好之后,我们需要在 Express.js 中引入 ws 包,创建并监听 WebSocket 服务器。在实践中,WebSocket 服务器的创建往往需要在 Express 服务器启动后进行。

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

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

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

上述代码中,我们使用了 Express.js 创建了一个服务器,并将它监听在 3000 端口。然后,我们使用 ws 包创建了一个 WebSocket 服务器,将它与 Express.js 服务器进行了绑定。当有 WebSocket 连接时,服务器将会输出“WebSocket connection open”的消息。当有消息传来时,服务器会将其输出。最后,当 WebSocket 连接关闭时,服务器将会输出“WebSocket connection closed”的消息。

前端实现 WebSocket 连接

在前端实现 WebSocket 连接很简单,我们只需要调用 WebSocket 的构造函数即可。然后,我们可以监听 WebSocket 对象的事件,如 open、message 和 close。

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

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

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

上述代码中,我们使用了 ws://localhost:3000 地址进行 WebSocket 连接。当连接建立时,前端将会输出“WebSocket connection open”的消息。当服务器发来消息时,前端将会将其输出。最后,当 WebSocket 连接关闭时,前端将会输出“WebSocket connection closed”的消息。

WebSocket 应用示例

下面是一个简单的 WebSocket 应用示例。该应用通过 WebSocket 实现了类似聊天室的功能。

服务器端代码:

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

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

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

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

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

前端代码:

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

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

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

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

在该示例中,当一个 WebSocket 连接建立时,服务器将打印出“WebSocket connection open”的消息。当有消息传来时,服务器将会将其广播给所有客户端。当一个 WebSocket 连接关闭时,服务器将打印出“WebSocket connection closed”的消息。同时,在前端中,我们监听了表单 submit 事件,将消息以 JSON 格式发送给服务器。当从服务器收到消息时,我们将其渲染到聊天窗口中。

总结

在 Express.js 中使用 WebSocket 非常简单,我们只需要在服务器端监听 WebSocket 的连接,然后在前端中建立 WebSocket 连接即可。WebSocket 可以为实时数据交互提供强大的支持,是现代 web 应用中必不可少的一环。希望本文能够帮助读者更好地理解 WebSocket 的使用方法,并在实际开发中得到应用。

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


猜你喜欢

  • Docker 容器 MySQL 无法连接解决方法

    Docker 是一个流行的虚拟化平台,用于开发、测试和部署应用程序。使用 Docker 可以减少开发周期、加速部署和避免在各个环境中出现不一致的问题。然而,在 Docker 容器中运行 MySQL 数...

    1 年前
  • PWA 中的 Web Push 通知:实现方法和使用技巧

    PWA 中的 Web Push 通知:实现方法和使用技巧 在现代化的 Web 应用中,PWA(Progressive Web App)已经成为了不可或缺的一部分。PWA 最大的特点就是它的离线缓存和能...

    1 年前
  • 理解 ES7 类的继承和构造函数

    ES7 类是 JavaScript 中的一种面向对象编程模型,它允许我们创建类、继承类和创建实例对象,从而使代码更加模块化、可复用和易于维护。在 ES7 中,类的继承和构造函数是两个重要的概念,本文将...

    1 年前
  • 使用 TypeScript 构建 Web Components

    Web Components 是现代 Web 开发中的一个重要技术。它允许 Web 开发者创建可复用的自定义元素,从而提高整个 Web 应用的可维护性和可扩展性。而 TypeScript 是 Java...

    1 年前
  • CSS Flexbox 布局中文字溢出的解决方案

    在 Web 开发中,我们经常需要使用 Flexbox 布局来排版页面。然而,当元素中包含文本内容时,可能会出现文字溢出的问题,影响页面美观度和用户体验。本文将介绍 Flexbox 布局中文字溢出的解决...

    1 年前
  • SSE 技术在实时数据推送中的应用

    随着 Web 应用逐渐向实时化方向演进,实现实时数据推送成为前端开发中的一大挑战。SSE 技术,也就是 Server-Sent Events,能够很好地解决这个问题。

    1 年前
  • ECMAScript 2021 中的 BigInt64Array 和 BigUint64Array

    随着数据处理需求的增长,64位整数数据类型在前端领域变得越来越重要。为了满足开发者的需求,ECMAScript 2021 版本引入了 BigInt64Array 和 BigUint64Array 两种...

    1 年前
  • MongoDB 性能优化实践:优化 NoSQL 数据库的读写速度

    前言 随着互联网技术的发展,数据量急速增长,传统的关系型数据库已经不能满足大数据时代的需求,NoSQL 数据库成为了新的趋势。而 MongoDB 作为一种高性能的 NoSQL 数据库,被广泛应用于互联...

    1 年前
  • ES11 中的所有更新和新特性详解

    JavaScript 已经成为了我们的 Web 开发中非常重要的一部分,而 ES11 也是 JavaScript 语言的一个新版本,带来了一系列的新特性和更新。在这篇文章中,我将从详细解释每个特性的用...

    1 年前
  • RxJS 操作符 buffer 的详解及实战

    RxJS 是一个用于异步编程的 JavaScript 库,它可以让我们更轻松地处理诸如 AJAX 调用、事件、定时器等异步数据流。RxJS 也提供了丰富的操作符来处理这些数据流。

    1 年前
  • 解决 Mocha 测试框架中 "Error: Timeout of 2000ms exceeded" 的问题

    在使用 Mocha 进行前端自动化测试时,有时会遇到 "Error: Timeout of 2000ms exceeded" 的错误,这是因为 Mocha 默认对测试用例的执行时间进行了限制,当测试用...

    1 年前
  • 在ES6中使用class关键字实现面向对象编程

    JavaScript的面向对象编程被广泛应用于Web前端开发中。ES6中引入了class关键字,使得编写面向对象代码更加简便。本文将详细介绍如何使用class关键字在ES6中实现面向对象编程,包括类的...

    1 年前
  • 选择 Headless CMS 必备的八条优势特性

    作为一名前端开发者,你可能已经开始接触到 Headless CMS。Headless CMS 是一种无头 CMS,它与传统 CMS 相比,更加灵活、可扩展,并支持多渠道的内容发布。

    1 年前
  • React-Redux 6.0 更新,带给你更好的应用体验

    React-Redux 6.0 是 React 生态系统中最为重要的一个库之一,它提供了优秀的架构和工具,方便我们使用 Redux 状态管理库。最近,React-Redux 进行了重大更新,版本号升至...

    1 年前
  • 如何在 Node.js 中使用 fs 模块进行文件操作?

    在 Node.js 中,fs 模块是用于与文件系统进行交互的核心模块。fs 模块提供了许多 API,可以执行各种文件操作,例如读取、写入、复制、重命名、删除等等。本文将深入介绍这些 API,并提供一些...

    1 年前
  • Fastify 应用中缓存失效的问题与解决方法

    在现代 Web 应用中,缓存是提高性能的重要一环。而在使用 Fastify 构建应用时,我们通常会使用 Fastify-caching 这个插件来实现缓存功能。然而,当我们遇到缓存失效的问题时,该怎么...

    1 年前
  • TypeScript 中尽量避免使用 var

    在 TypeScript 中,我们经常会使用 var 关键字来声明变量。但是,var 存在一些问题,比如变量作用域的问题和变量提升等等。因此,尽量避免使用 var 的做法是值得推荐的。

    1 年前
  • 如何在 Cypress 中使用 Docker 进行自动化测试?

    在前端开发中,自动化测试是非常重要的一环。Cypress 是个非常好用的工具,然而在实际使用过程中,我们可能会遇到一些问题,例如环境不同导致的测试用例失败等等。使用 Docker,可以非常方便地部署多...

    1 年前
  • ES7 中的 Proxy 实现对象观察

    ES7 中的 Proxy 实现对象观察 随着 JavaScript 在前端开发中的广泛应用,对于数据的处理和管理越来越重要。在 ES7 中,引入了 Proxy 对象,可以帮助我们实现对象观察,从而更好...

    1 年前
  • 如何使用 Socket.io 实现 WebRTC 音视频聊天系统

    WebRTC 是一种用于实时通信的技术,可以将音频、视频和数据传输到其他用户。利用 WebRTC,我们可以轻松地将实时通信集成到我们的应用程序中。接下来,我们将介绍如何在 WebRTC 中使用 Soc...

    1 年前

相关推荐

    暂无文章