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

简单了解一下: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.lryc.cn/news/204899.html

相关文章:

  • 目标检测技术概述
  • 软件设计原则-开闭原则讲解以及代码示例
  • 分类预测 | MATLAB实现SSA-CNN-GRU-Attention数据分类预测(SE注意力机制)
  • LeetCode--180 连续出现的数字
  • 面试算法34:外星语言是否排序
  • 常用docker命令 docker_cmd_sheet
  • 算法进阶——数组中的逆序对
  • hackmyvm之gift
  • 1024,向着“顶尖程序员“迈进
  • Arcgis 数据操作
  • YoloV7改进策略:SwiftFormer,全网首发,独家改进的高效加性注意力用于实时移动视觉应用的模型,重构YoloV7
  • Day07 Stream流递归Map集合Collections可变参数
  • 8.JavaScript-注释
  • 知识分享|分段函数线性化及matlab测试
  • ant target的depends属性
  • 【三维重建】DreamGaussian:高斯splatting的单视图3D内容生成(原理+代码)
  • 如何使用Flutter开发执行操作系统shell命令的工具
  • 西山居 游戏研发工程师实习生 面经
  • YOLOv8训练自己的数据集+改进方法复现
  • 尚硅谷kafka3.0.0
  • 【Andriod】Appium的不同版本(Appium GUI、Appium Desktop、Appium Server )的安装教程
  • leetcode:面试题 17.04. 消失的数字(找单身狗/排序/公式)
  • 基于SpringBoot的时间管理系统
  • centos搭建elastic集群
  • CUDA学习笔记(九)Dynamic Parallelism
  • 周记之马上要答辩了
  • git简介和指令
  • alibaba.fastjson的使用(五)-- Json数组字符串 ==》 JSONArray
  • ts json的中boolean布尔值或者int数字都是字符串,转成对象对应类型
  • 【OpenGL】七、混合