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

下面是关于 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日

相关文章

  • python使用 __init__初始化操作简单示例

    当我们创建一个Python类时,我们有时需要在实例化对象时进行一些初始化操作。这就是使用Python的__init__函数的地方。在这篇文章中,我将详细讲解如何使用__init__函数进行初始化操作。下面是完整攻略: 1. __init__函数的基本用法 __init__函数是Python类的构造函数,它用于初始化新创建的对象。当我们实例化一个类时,__in…

    other 2023年6月20日
    00
  • windows8系统账号自动登录默认设置2种方式

    Windows 8系统支持两种方式设置自动登录:本地计算机账号自动登录和Microsoft账号自动登录。下面分别详细讲解这两种方式的设置步骤。 本地计算机账号自动登录 打开“运行”对话框,方法:按下“Win + R”组合键,或者在开始菜单中搜索“运行”。 输入“netplwiz”命令并点击“确定”按钮。 在“用户账户”窗口中,取消勾选“要使用本计算机,用户必…

    other 2023年6月27日
    00
  • IIS下配置页面重写(配合插件url-rewrite2去除页面后缀名)的实现方法

    IIS下配置页面重写(配合插件url-rewrite2去除页面后缀名)的实现方法 在IIS(Internet Information Services)中配置页面重写,可以使用插件url-rewrite2来去除页面的后缀名。下面是详细的攻略,包含了两个示例说明。 步骤一:安装url-rewrite2插件 下载url-rewrite2插件并安装到IIS服务器上…

    other 2023年8月6日
    00
  • if语句break用法

    当然,我很乐意为您提供有关“if语句break用法”的完整攻略。以下是详细的步骤和两个示例: 1. if语句 if语句是一种条件语句,用于根据条件执行不同的代码块。if语句通常使用布尔表达式来判断条件是否成立。 以下是if语句的基本语法: if condition: # code block 在这个示例中,我们使用if语句来判断条件是否成立。如果条件成立,就…

    other 2023年5月6日
    00
  • flutter中的资源和图片加载示例详解

    请跟我一起学习Flutter中的资源和图片加载示例详解。我们将分4个部分介绍这个主题。 1.资源文件与图片资源 在Flutter中,通过pubspec.yaml文件来管理资源文件,其中包括图片和其他任何形式的文件(如字体文件、JSON文件和配置文件)。 在pubspec.yaml文件中,通过flutter关键字下的assets属性来声明资源文件和图片。例如下…

    other 2023年6月25日
    00
  • php之50个开源项目

    PHP之50个开源项目 PHP是一种广泛应用于Web开发领域的脚本语言,其开源和封装的能力使得它成为了许多商业应用的选择。在这篇文章中,我们将会介绍50个优秀的开源PHP框架、工具和库,这些项目有助于Web开发的复杂性和困难,并为开发人员提供更好的工作效率和代码复用性。 1. Laravel Laravel是当今最流行的PHP框架之一,它允许开发人员使用简单…

    其他 2023年3月29日
    00
  • 详解C/C++内存区域划分(简而易懂)

    详解C/C++内存区域划分(简而易懂) 在C/C++程序运行期间,内存会被划分为不同的段,每个段有不同的使用方式和属性。 内存划分 栈(stack) 栈是一种在程序运行时内存自动分配和释放的区域,它存储程序执行过程中的各种变量。栈的特点是先进后出,后进先出,因此被称为“后进先出”(LIFO)。 栈的大小是有限的,一般来说,栈的大小在几兆到几十兆之间,超过这个…

    other 2023年6月27日
    00
  • pandas高级教程之:dataframe的合并

    pandas高级教程之:dataframe的合并 在pandas中,DataFrame是一种非常常用的数据结构,而数据分析中常常需要将不同的DataFrame进行合并。本文将介绍在pandas中,如何进行DataFrame的合并操作。具体包括以下内容: 横向合并(merge) 纵向合并(concat) 数据库风格的合并(join) 横向合并(merge) 横…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部