node.js ws模块搭建websocket服务端的方法示例

yizhihongxing

下面是关于 node.js ws 模块搭建 WebSocket 服务端的方法示例的完整攻略:

1. 什么是 WebSocket?

WebSocket 是一种在单个 TCP 连接上提供双向通信的协议,它是 HTTP 的一种升级,与 HTTP 不同的是 WebSocket 实现了服务器推送数据到客户端的功能,从而实现了实时通信。

2. 什么是 ws 模块?

ws 模块是一个基于 Node.js 的 WebSocket 库,它提供了 WebSocket 服务端和客户端的实现。

3. 在 Node.js 中使用 ws 模块创建 WebSocket 服务端

步骤 1:安装 ws 模块

在命令行中使用以下命令安装 ws 模块:

npm install ws --save

步骤 2:创建 WebSocket 服务器

创建一个 server.js 文件,输入以下代码:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  console.log('Client connected');

  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });

  ws.send('Hello, World!');
});

这段代码创建了一个 WebSocket 服务器,监听 8080 端口。当客户端连接到服务器时,会打印 'Client connected',当客户端发送消息到服务器时,会打印消息内容。其中 ws.send() 是通过 WebSocket 发送消息到客户端的 API。

步骤 3:启动 WebSocket 服务器

在命令行中运行以下命令启动 WebSocket 服务器:

node server.js

现在,WebSocket 服务器已经启动了,你可以通过在浏览器中打开 http://localhost:8080 来访问它。

4. 示例 1: 在浏览器中使用 WebSocket 客户端

步骤 1:创建 HTML 文件

创建一个 index.html 文件,输入以下代码:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>WebSocket Example</title>
  </head>
  <body>
    <script>
      const ws = new WebSocket('ws://localhost:8080');

      ws.onopen = function (event) {
        alert('Connected');
      };

      ws.onmessage = function (event) {
        console.log('received: ' + event.data);
      };

      ws.onerror = function (event) {
        alert('Error');
      };
    </script>
  </body>
</html>

这段代码创建了一个 WebSocket 对象,并尝试通过 ws://localhost:8080 连接到我们之前创建的 WebSocket 服务器。当连接成功时,会弹出 'Connected',当接收到来自服务器发送的消息时,可以在控制台中看到消息内容。

步骤 2:运行 HTML 文件

在浏览器中打开 index.html 文件。当 WebSocket 连接成功时,页面会弹出 'Connected',在控制台中会打印 'received: Hello, World!',这是服务器发送的一条消息。

5. 示例 2:在 Node.js 中使用 WebSocket 客户端

除了在浏览器中使用 WebSocket 客户端之外,你还可以通过 ws 模块在 Node.js 中创建 WebSocket 客户端。

步骤 1:创建客户端代码

在 Node.js 中创建一个名为 client.js 的文件,输入以下代码:

const WebSocket = require('ws');
const ws = new WebSocket('ws://localhost:8080');

ws.on('open', function open() {
  console.log('Connected');
  ws.send('Hello, World!');
});

ws.on('message', function incoming(data) {
  console.log('received: %s', data);
});

ws.on('error', function error() {
  console.log('Error');
});

这段代码创建了一个 WebSocket 客户端,并尝试通过 ws://localhost:8080 连接到我们之前创建的 WebSocket 服务器。当连接成功时,会打印 'Connected',当接收到来自服务器发送的消息时,会打印消息内容。其中 ws.send() 是通过 WebSocket 发送消息到服务器的 API。

步骤 2:运行客户端代码

在命令行中运行以下命令来运行客户端代码:

node client.js

客户端代码会尝试连接到我们之前创建的 WebSocket 服务器,并发送一条消息。当连接成功时,会打印 'Connected',当接收到来自服务器发送的消息时,会打印消息内容。

至此,你已经学会了如何使用 ws 模块搭建 WebSocket 服务端,并同时提供了两个示例说明。希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js ws模块搭建websocket服务端的方法示例 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • php实现把url转换迅雷thunder资源下载地址的方法

    PHP实现把URL转换为迅雷Thunder资源下载地址的方法 迅雷Thunder资源下载地址是一种特殊的URL格式,可以直接在迅雷软件中使用。下面是使用PHP实现将普通URL转换为迅雷Thunder资源下载地址的方法的完整攻略。 步骤1:获取原始URL 首先,我们需要获取用户提供的原始URL,这是我们要转换的目标。 $originalUrl = \&quot…

    other 2023年8月4日
    00
  • 通过Spring Boot + Mybatis + Redis快速搭建现代化Web项目

    以下是通过Spring Boot + Mybatis + Redis快速搭建现代化Web项目的完整攻略: 步骤1:创建Spring Boot项目 使用Spring Initializr创建一个新的Spring Boot项目。 添加所需的依赖,包括Spring Boot、Mybatis和Redis。 步骤2:配置数据库和Redis连接 在application…

    other 2023年10月17日
    00
  • 阿里路由框架ARouter 源码解析之Compiler

    阿里路由框架ARouter 源码解析之Compiler ARouter是一款阿里巴巴开源的Android路由框架,它提供了一种方便快捷的方式来实现组件之间的通信和页面跳转。在ARouter的源码中,Compiler模块起着重要的作用,它负责将注解处理器生成的代码编译成可执行的代码。下面是Compiler模块的详细解析。 1. Compiler模块的作用 Co…

    other 2023年10月13日
    00
  • 解决ajax跨域请求(总结)

    解决ajax跨域请求(总结) 在前端开发中,我们经常会遇到这样的问题:当我们的网站想从其它域名的服务器上获取数据时,由于同源策略的限制,我们经常会遇到跨域请求失败的情况。如何解决这个问题呢?本篇文章旨在总结各种解决跨域请求的方法,希望能够帮助到开发者。 什么是跨域请求 同源策略(Same-origin policy)是浏览器的一种安全策略。它指的是,不同域名…

    其他 2023年3月28日
    00
  • 魔兽世界7.3.5狂暴战怎么堆属性 wow7.35狂暴战配装属性优先级攻略

    魔兽世界7.3.5狂暴战属性堆叠攻略 简介 狂暴战士是一个以输出为主的近战职业,主要使用双手武器进行输出,需要注意的是,须要保证自己的活力。 属性优先级 爆击 > 急速 > 全能 > 精通 > 血量 爆击率 爆击率是最高优先级的属性,爆击率不仅能够提升输出,而且能够改善狂暴身手和偏斜的回复速度。 急速 提高攻击速度和技能发动速度,加快…

    other 2023年6月27日
    00
  • 电脑鼠标左右键如何切换

    电脑鼠标左右键如何切换主要是指在使用鼠标时,如何切换鼠标的左右按键功能。在Windows系统中,默认情况下,鼠标左键用于选中和执行任务,而鼠标右键用于打开快捷菜单。但是,有时候需要我们将左右键功能进行切换,比如针对左撇子用户。 下面是详细的攻略: 方法一:更改鼠标底部按钮设置 首先,打开“控制面板”,然后找到“硬件和声音”选项 在“设备和打印机”下找到鼠标,…

    other 2023年6月27日
    00
  • hive函数简介

    Hive函数简介 Hive是一个基于Hadoop的数据仓库软件,它提供了类似于SQL的查询语言,可以用来进行数据分析和处理。Hive还提供了丰富的内置函数,用于数据的处理、转换、聚合等操作。本文将介绍Hive内置函数的使用方法及示例。 内置函数分类 Hive内置函数可以分为以下几类: 算术函数:用于进行算术计算,如加减乘除等。 字符串函数:用于对字符串数据进…

    other 2023年6月27日
    00
  • Ajax异步操作集合啦(阿贾克斯)

    Ajax(Asynchronous JavaScript and XML)是一种用于创建快速动态网页的技术,它可以在不刷新整个页面的情况下更新部分页面内容。本文将介绍Ajax异步操作集合的完整攻略,包括Ajax的基本原理、使用方法、示例等内容。 1. Ajax的基本原理 Ajax的基本原理是通过JavaScript和XMLHttpRequest对象来实现异步…

    other 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部