Node.js 中的 WebSocket 实现

WebSocket 是一种可以在 Web 应用程序中创建实时传输数据的技术,它通过一个持续的连接实现双向通信,能够实时地将数据从服务器推送到客户端。

在 Node.js 中,有很多种实现 WebSocket 的库,其中比较流行的是 ws 和 socket.io。本文将介绍如何使用 ws 库实现 WebSocket。

安装 ws

使用 npm 安装 ws 库:

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

WebSocket 服务器端代码

首先,我们创建一个 WebSocket 的服务器端代码,代码如下所示:

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

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

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

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

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

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

上面的代码创建了一个 WebSocket 的服务器端,监听 8080 端口。当客户端连接到服务器时,会输出 client connected,收到客户端发来的消息时,会输出 Received message => 和消息内容,然后将收到的消息原样返回客户端。当客户端断开连接时,会输出 client disconnected

WebSocket 客户端代码

接下来,我们创建一个 WebSocket 的客户端代码,代码如下所示:

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

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

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

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

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

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

上面的代码创建了一个 WebSocket 客户端,连接到服务器端口号为 8080 的服务器。连接成功后,会输出 connected to server,然后向服务器发送消息 Hello, server!。当收到服务器返回的消息时,会输出 Received message => 和消息内容。当客户端从服务器断开连接时,会输出 disconnected from server

测试运行

在命令行中运行服务器端代码:

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

然后,在另一个命令行窗口中运行客户端代码:

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

可以看到,客户端发送了一条消息到服务器端,然后服务器端原样返回了这条消息给客户端。客户端收到了服务器端返回的消息。

总结

本文介绍了如何使用 ws 库在 Node.js 中实现 WebSocket 的服务器端和客户端代码,并进行了简单的测试。WebSocket 是一种实时传输数据的技术,可以用来优化 Web 应用程序的体验。使用 ws 库,开发者可以轻松地实现 WebSocket 功能,并且这个库也有良好的文档和社区支持,非常适合在 Node.js 中使用。

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


猜你喜欢

  • 如何使用 CSS Flexbox 实现响应式时间轴布局

    在网页设计中,时间轴布局常常被用来展示一段历史或者进程。时间轴布局可以很好的展示一系列的事件或者步骤,而且在各种设备上都能够很好的呈现。在本文中,我们将会使用 CSS Flexbox 技术实现一个响应...

    1 年前
  • Vue.js 学习 —— 简单的单页应用项目开发

    在前端开发中,Vue.js 可谓是备受青睐的框架之一。它不仅提供了一种优雅而高效的方式来构建用户界面,还能让开发者以数据驱动的方式管理应用程序。本文将介绍如何使用 Vue.js 开发一个简单的单页应用...

    1 年前
  • MongoDB 的地理空间查询技术探究

    在 Web 开发中,地理位置数据查询和处理是非常重要的一项技术。而 MongoDB 作为一个流行的 NoSQL 数据库,具有很多优秀的地理空间查询功能。本文将详细介绍 MongoDB 的地理空间查询技...

    1 年前
  • 使用 expect.js 和 Mocha.js 中的 before() 方法测试日期

    日期是前端开发中不可避免的问题,尤其在处理时区和夏令时时,难免会遇到各种奇怪的问题。为了确保日期的正确性,测试是必不可少的一步。本文介绍使用 expect.js 和 Mocha.js 中的 befor...

    1 年前
  • Enzyme 多版本并存问题解决方式

    Enzyme 多版本并存问题解决方式 在开发 React 应用的过程中,我们通常会用到 Enzyme 这个库来进行测试。Enzyme 是 React 官方推荐的测试库之一,它提供了一整套用于测试 Re...

    1 年前
  • Kubernetes 中的 Fluentd 集中日志收集器

    摘要 在 Kubernetes 中,Fluentd 是一种流行的集中式日志收集器,可以收集 Kubernetes 中的各种日志,并将它们发送到指定的存储后端,如 Elasticsearch, Mong...

    1 年前
  • Vue.js 中实现图片懒加载的方案

    在 web 开发中,图片是一个非常重要的元素。但是,当我们网页中的图片过多或者图片文件过大时,会导致网页加载速度缓慢,给用户带来不好的体验。这时,我们可以采用图片懒加载的方案来优化网页性能。

    1 年前
  • Deno 中使用 Sequelize 操作 MySQL 的完整教程

    前言 Deno 是 Ryan Dahl 在 2018 年开发的新型 JavaScript 运行时环境,其最大的优点是不依赖于 Node.js,而是直接与操作系统交互,具有高效、安全、可维护等特点。

    1 年前
  • PM2 和 Supervisor 的比较:哪个更适合 Node.js 应用

    在 Node.js 应用部署中,进程管理工具是不可缺少的一部分。PM2 和 Supervisor 都是常用的进程管理工具,那么它们之间有什么区别呢?哪个更适合使用呢?下面我们来详细比较一下。

    1 年前
  • Node.js 中的 Event Loop 原理及实现

    Node.js 中的 Event Loop 原理及实现 Node.js 采用非阻塞 I/O 和事件驱动的编程范式,能够处理大量并发连接和 I/O 操作,能够高效地构建高性能的 Web 应用程序。

    1 年前
  • Koa 项目开发实践:解决 “koa-cors not working” 问题

    在前端开发中,我们经常需要处理跨域请求,其中一个常见的解决方案是使用 Koa 框架的 koa-cors 中间件。但是,在实际开发过程中,很多人可能会遇到 “koa-cors not working” ...

    1 年前
  • 用 Serverless 实现自动打包、自动构建

    随着前端技术的发展,代码的打包和构建越来越复杂。而传统的自动化构建工具往往需要手动配置,且难以维护。Serverless 是一个快速构建和部署应用程序的解决方案,也可以用来实现自动打包和构建。

    1 年前
  • ES7 对 Math 的新特性解析

    Math 对于前端开发者来说是一个非常重要的对象,它包含了许多数学相关的函数,例如计算绝对值、对数、三角函数等等。在 ES7 中,Math 对象得到了一些新特性的增强和扩展,本文将会为大家介绍其中的几...

    1 年前
  • Docker 中使用 Consul 进行服务注册和发现的技巧和注意事项

    概述 Docker 是一个轻量级的容器技术,可以轻松地为应用程序提供一个可移植的运行环境。而在应用程序运行时,服务注册和发现是一个必不可少的功能,它可以让服务间互相发现和通信。

    1 年前
  • 使用 Jest 测试框架进行 Angular 集成测试

    在前端开发的过程中,由于业务逻辑的复杂性和程序员的疏忽,很容易出现代码错误或者不可预见的 bug,这些都可能导致应用的崩溃或者运行时出现问题。为了避免这些问题,我们需要使用测试工具对应用进行测试,以保...

    1 年前
  • 使用 ES9 的 Promise.all 方法有效管理 Promise 的状态(Effective Promise State Management with Promise.all in ES9)

    在现代的前端开发中,Promise 已经成为了异步编程的基础。随着语言的发展,ES9 提供了一个更加强大的方法来有效管理多个 Promise 实例的状态,这就是 Promise.all。

    1 年前
  • SASS 中如何避免样式冲突及其本质解决方案

    引言 在前端开发中,样式冲突是一个普遍存在的问题。当多个样式表同时作用于同一个页面时,样式之间可能会出现不一致、重叠、遮盖等问题,这既影响页面的美观度,也影响了网站的用户体验。

    1 年前
  • ECMAScript 2021 中如何使用 Optional Chaining 操作符安全地访问多层对象属性

    在一个 JavaScript 应用中,我们经常需要深入嵌套的对象来获取数据。当对象链中间的某个对象未定义或为 null 时,我们遇到了一个非常令人头痛的困扰:我们的代码将导致运行时错误。

    1 年前
  • 使用 Fastify 框架实现代码分层架构的最佳实践

    引言 对于前端开发,我们常常需要构建可维护、可扩展的应用程序。实现代码分层架构是一种有效的解决方案。代码分层框架有多种工具和框架可供选择。其中 Fastify 是一种流行的 Node.js Web 框...

    1 年前
  • Material Design 中使用 TextInputLayout 实现浮动标签输入框教程

    在移动应用开发中,输入框是一个非常常见的界面元素,而 Material Design 中的 TextInputLayout 可以让输入框变得更加美观和易用。本文将介绍如何在 Android 应用中使用...

    1 年前

相关推荐

    暂无文章