当前位置: 首页 > article >正文

简单了解一下:NodeJS的WebSocket网络编程

NodeJS的webSocket网络编程。

那什么是WebSocket呢?WebSocket是HTML5提供的一种浏览器和服务器进行通信的网络技术。两者之间,只需要做一个握手动作,就可以在浏览器和服务器之间开启一条通道,就可以进行数据相互传输。

实现WebSocket网络编程,分为三个步骤:

  1. 创建WebSocket服务器
  2. 创建WebSocket客户端
  3. 服务器和客户端通信

创建WebSocket服务

在NodeJS创建WebSocket,需要借助http模块的createServer:

const fs = require("fs");
const http = require("http");
const Ws = require("ws").Server;

const service = http.createServer((request, response) => {
  if (request.url == '/') {
    fs.readFile("./index.html", (err, data) => {
      if (err) { return };
      response.writeHead(200, { "Content-Type": "text/html" });
      response.end(data);
    });
  }
})
service.listen(34421, () => {
  console.log("监听地址:http://127.0.0.1:34421")
})

let wsServer = new Ws({ server: service });
wsServer.on("connection", function (socket) {
  console.log("连接成功");
  socket.on("message", msg => {
    console.log("客户端信息", msg)
    socket.send("客户端发送的信息:" + msg + "," + new Date().getTime())
  })
})

WebSocket服务器端有这些事件:

  1. connection:客户端连接服务器
  2. disconnect:客户端断开连接
  3. message:获取客户端发送的信息
  4. error:发生错误

WebSocket客户端

这里的客户端就是前端页面:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script>
    const ws = new WebSocket("ws://127.0.0.1:34421")
    ws.onopen = () => {
      ws.send("hello")
    }
    ws.onmessage = (ev) => {
      console.log("ev", ev)
    }
  </script>
</body>

</html>

前后端都启动后,打开前端页面的控制台,效果如下:

在这里插入图片描述
后端的日志:

在这里插入图片描述
这就是NodeJS的WebSocket网络编程


http://www.kler.cn/a/106286.html

相关文章:

  • LabVIEW中的UDP与TCP比较
  • 软件测试 —— 自动化基础
  • 基于STM32的智能温室控制系统设计
  • 排序算法(基础)大全
  • 终端快捷键学习笔记
  • ADS学习笔记 5. 微带天线设计
  • 【安装tensorflow-CPU版本】
  • javascript原生态xhr上传多个图片,可预览和修改上传图片为固定尺寸比例,防恶意代码,加后端php处理图片
  • vue使用smooth-signature实现移动端电子签字,包括横竖屏
  • Mysql数据库 4.SQL语言 DQL数据查询语言 查询
  • 1. 两数之和、Leetcode的Python实现
  • vtk 绘制等高线
  • mavros黑白名单设置
  • React Swiper.js使用(详细版)3D聚焦特效,自定义导航按钮等
  • Node.js 的 CommonJS ECMAScript 标准用法
  • 【算法练习Day30】无重叠区间 划分字母区间合并区间
  • 【软考】系统集成项目管理工程师(九)项目成本管理【4分】
  • Virtual DOM
  • 2023.10.26-SQL测试题
  • 面向对象(类/继承/封装/多态)详解
  • 【分享】7-Zip压缩包的密码可以取消吗?
  • 为什么Open3D可视化TensorFlow张量速度超慢
  • STM32 HAL库串口使用printf
  • vue中使用xlsx插件导出多sheet excel实现方法
  • 行为型模式-状态模式
  • C++重载 强制类型转换运算符