NodeJS简单实现WebSocket功能示例

接下来我详细讲解“NodeJS简单实现WebSocket功能示例”的完整攻略。

WebSocket简介

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 从开始握手时就与 HTTP 具有相似之处,因此能够通过现有的 HTTP 端口(80 和 443)进行通信,避免了被防火墙过滤的风险。WebSocket 网络通信协议可以在不提供 HTTP 帮助的情况下,实现客户端和服务器之间的实时双向数据传输。

基础知识

  • WebSocket 握手过程服从 HTTP 协议;

  • WebSocket 彼此之间是平等的双向通信,可以发送消息到任何一方,可以是客户端也可以是服务端;

  • WebSocket 有着一套自己的协议和标准;

  • WebSocket 是基于 TCP 的,相比于 HTTP 更加适合在高并发下使用。

示例一

下面,我们通过一个简单的 WebSocket 实例来了解实现 WebSocket 的过程。

实现步骤

  1. 安装 ws 模块,可以通过以下命令安装:
npm install ws --save
  1. 编写服务器代码。在服务器代码中,我们需要创建一个 WebSocket 服务器,并监听绑定的端口。
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });
  ws.send('something');
});
  1. 启动服务器,在命令行中执行以下命令:
node server.js
  1. 客户端代码实现。下面是一个简单的 JavaScript 代码,实现了连接到服务器上,并发送一条消息的功能。
const WebSocket = require('ws');
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', function open() {
  ws.send('hello server');
});
ws.on('message', function incoming(data) {
  console.log(data);
});

实例效果

在控制台中可以看到如下输出:

received: hello server

示例二

下面,我们用 Express 搭建一个服务器,实现 WebSocket 交互。

实现步骤

  1. 安装 expressws 模块,可以通过以下命令安装:
npm install express ws --save
  1. 编写服务器代码。使用 Express 搭建一个服务器,监听 3000 端口,并开启 WebSocket 功能。
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const WebSocket = require('ws');
const wss = new WebSocket.Server({ server });
wss.on('connection', function connection(ws) {
  console.log('client connected');
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
    ws.send(`message: ${message}`);
  });
  ws.on('close', function () {
    console.log('client disconnected');
  });
});
server.listen(3000, function () {
  console.log('server started on port 3000');
});
  1. 启动服务器,在命令行中执行以下命令:
node server.js
  1. 客户端代码实现。下面是一个简单的 JavaScript 代码,实现了连接到服务器上,并发送一条消息的功能。
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>WebSocket Test</title>
  </head>
  <body>
    <form>
      <input id="message" type="text" placeholder="Enter message" autofocus>
      <button id="send">Send</button>
    </form>

    <script>
      const socket = new WebSocket('ws://localhost:3000');
      socket.onopen = function (event) {
        console.log('WebSocket connected', event);
      };
      socket.onmessage = function (event) {
        console.log('WebSocket message received', event.data);
      };
      socket.onclose = function (event) {
        console.error('WebSocket closed', event);
      };
      document.getElementById('send').addEventListener('click', function (event) {
        event.preventDefault();
        const message = document.getElementById('message').value;
        console.log('send message', message);
        socket.send(message);
      });
    </script>
  </body>
</html>

实例效果

打开浏览器访问 http://localhost:3000,在输入框中输入消息并点击“Send”按钮,可以在控制台中看到如下输出:

WebSocket connected Event {isTrusted: true, type: "open", target: WebSocket, currentTarget: WebSocket, eventPhase: 2, …}
send message hello world
WebSocket message received message: hello world

至此,NodeJS 的 WebSocket 功能已经实现。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NodeJS简单实现WebSocket功能示例 - Python技术站

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

相关文章

  • Node.js前后端交互实现用户登陆的实践

    我会提供一个Node.js实现前后端交互实现用户登录的攻略,包含以下部分内容: 前置知识 搭建后端Node.js服务器 实现前端页面 实现用户注册和登录功能 示例演示 1. 前置知识 在学习Node.js实现前后端交互,需要掌握以下基本知识: HTML、CSS、JavaScript基础知识 Ajax异步请求和响应 Node.js后台知识 2. 搭建后端Nod…

    node js 2023年6月8日
    00
  • 学习node.js 断言的使用详解

    学习Node.js断言的使用是每个Node.js开发者所必须掌握的技能之一。本文将全面剖析Node.js断言库的使用方法,为读者提供全面且丰富的进阶知识点。 什么是Node.js断言库? 断言库是Node.js标准库中的一个模块,用于编写各种测试用例的断言语句。它的作用是用于将某个条件结果与期望结果进行比较,如果二者不符,则抛出异常。 常见的Node.js断…

    node js 2023年6月8日
    00
  • 一步一步asp.net ajax类别Tree生成

    一步一步asp.net ajax类别Tree生成攻略: 安装必要的 Nuget 包 在 Visual Studio 中打开项目,右键单击项目并选择“管理 Nuget 程序包”。 在“浏览”选项卡下搜索“Microsoft.AspNet.WebApi.Core”和“Microsoft.AspNet.WebApi.Owin”,然后点击“安装”。这些程序包是必要的…

    node js 2023年6月8日
    00
  • 红黑树的插入详解及Javascript实现方法示例

    下面是关于“红黑树的插入详解及Javascript实现方法示例”的完整攻略: 红黑树的插入详解及Javascript实现方法示例 什么是红黑树? 红黑树是一种自平衡的二叉搜索树,被广泛应用于各种计算机科学领域,例如操作系统、数据库和编译器等。它的性能非常优秀,在最坏情况下,时间复杂度为O(log n)。 红黑树的每个节点都有一个颜色,可能是红色或黑色。同时,…

    node js 2023年6月8日
    00
  • nodejs实现发送邮箱验证码功能

    下面我将为你详细讲解如何使用Node.js来实现发送邮箱验证码功能的完整攻略。 简介 邮件验证码功能包含以下主要步骤: 生成随机验证码 将验证码存储到服务器端 向用户邮箱发送包含验证码的邮件 校验用户输入的验证码 我们将使用Node.js及其邮件服务相关模块来完成以上四个步骤。 生成随机验证码 const crypto = require(‘crypto’)…

    node js 2023年6月8日
    00
  • Node.js查找当前目录下文件夹实例代码

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,可以执行JavaScript代码,因此可以用来查找当前目录下的文件夹。下面是完整攻略及两条示例说明。 使用Node.js查找当前目录下文件夹实例代码 1. 使用fs模块 Node.js提供了fs模块,可以用来访问文件系统。通过fs模块的readdirSync()方法可以获取当前路径…

    node js 2023年6月8日
    00
  • Node.js搭建WEB服务器的示例代码

    我会逐步为您讲解如何使用Node.js搭建WEB服务器,并提供两个示例说明。 什么是Node.js Node.js是基于Chrome V8 JavaScript引擎的开源的、跨平台的、事件驱动的JavaScript运行时环境。它使得开发者可以使用JavaScript编写后端服务器、命令行工具等应用程序。也就是说,使用Node.js可以将 JavaScript…

    node js 2023年6月8日
    00
  • Node.js API详解之 assert模块用法实例分析

    首先我想解释一下Node.js中的assert模块。assert模块是Node.js中的一个断言库,用于编写单元测试,以及在开发过程中提供运行时验证代码的便利方式。 在使用assert模块时,可以在代码中插入断言,如果这些断言不成立,则会抛出一个AssertionError错误,并指出哪个断言失败了。assert模块的API包含了各种不同类型的断言,例如st…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部