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

news2025/1/15 3:19:02

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.coloradmin.cn/o/1127469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 进程切换与命令行参数

假设进程1现在要切走了&#xff0c;切入进程2.那进程1就要先保存数据&#xff0c;方便以后恢复&#xff0c; 然后进程2再切走&#xff0c;进程1再把数据还原&#xff1a; 操作系统又分为实时操作系统和分时操作系统。 实时操作系统是是给操作系统一个进程&#xff0c;操作系统…

网络安全https

http是明文的&#xff0c;相当于在网上裸奔&#xff0c;引出了https&#xff0c;大多数网站都转为了https&#xff0c;连非法的赌博网站有的都是https的。 1.https的网站是不是必须让用户装数字证书&#xff1f; 答&#xff1a;分两种&#xff0c;一种是单向认证&#xff0c;像…

桥梁结构健康监测系统落地方案

桥梁结构健康监测的意义是多方面的。首先&#xff0c;它可以实时采集桥梁的结构数据&#xff0c;并对其进行处理和分析&#xff0c;以确定结构损伤的位置、评估桥梁的健康状况&#xff0c;并预测承载力的发展趋势。这有助于及时发现桥梁的结构问题和潜在风险&#xff0c;为采取…

2023年中国互联网视听平台发展趋势分析:未来增速将从2023年开始缓慢提升[图]

互联网视听平台是指基于互联网技术&#xff0c;提供包括音频、影视、综艺节目、直播、短视频等内容的数字化传播平台。互联网视听平台通过电脑端、移动端等多种终端提供在线点播、直播、互动等服务&#xff0c;具有内容丰富、便捷高效、交互性强等特点&#xff0c;是大众获取娱…

基础课7——计算机视觉研究任务与行业应用

计算机视觉的研究任务包括以下几个方面&#xff1a; 图像分类&#xff08;Image Classification&#xff09;&#xff1a;该任务的目标是确定给定图像属于哪个类别。例如&#xff0c;将一张猫的图像分类为“猫”类别。目标检测&#xff08;Object Detection&#xff09;&#…

工业异常检测:从前沿到落地

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言一、前沿技术&#xff1a;SimpleNet1. 任务分类&#xff1a;分隔2. 性能对比&#xff1a;faster&higher3. 研究背景困难&#xff1a;方案&#xff1a;无监督数据…

8.1 矢量图层符号化整体说明

文章目录 前言符号化与图层渲染符号符号层渲染器 总结 前言 地图制图是QGIS的优势所在&#xff0c;QGIS包含完整的地图制图功能&#xff0c;如标注与注记、符号化与地图综合等多种功能。 符号化&#xff08;Symbolization&#xff09;是指利用符号将地理事物或现象抽象化。 QGi…

STM32-ADC实验

实验1&#xff1a;单ADC单通道中断 硬件原理图 由于PC1接到电位器上&#xff0c;所以我们实验选择PC1引脚作为ADC接口&#xff0c;查询STM32数据手册得知PC1可作为ADC1的IN11&#xff08;ADC1_IN11&#xff09;。 USART配置 115200-8-N-1&#xff0c;重定向支持printf打印&…

超简单的视差滚动网站

超简单的视差滚动网站 原理能就是记录鼠标的滚动,然后给不同的元素添加不同的偏移 遵循开源精神,源码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"width…

视觉SLAM数据集(三):KITTI 数据集

教程目录 一、官网二、注册登录三、下载数据集四、测试数据集 一、官网 官网地址&#xff1a;https://www.cvlibs.net/datasets/kitti/eval_odometry.php Kitti数据集很庞大&#xff0c;包含了双目、光流、场景流、深度、里程计、目标、跟踪、马路、语义、原始数据等大类别&…

C++入门(3):引用,内联函数

一、引用 1.1 引用特性 引用必须初始化 一个变量可以有多个引用 引用一旦引用一个实体&#xff0c;就不能引用其他实体 int main() {int a 10, C 20;int& b a;b c; // 赋值&#xff1f;还是b变成c的别名&#xff1f;return 0; }1.2 常引用 引用权限可以平移或缩小…

有没有免费靠谱的配音软件?(不带广告)

免费配音软件在当今社会中越来越受到人们的关注和喜爱。随着科技的不断发展和智能手机的普及&#xff0c;配音软件成为了人们生活中不可或缺的一部分。无论是在职场中需要制作视频配音&#xff0c;还是在社交媒体上发布个人动态&#xff0c;配音软件都能帮助我们实现文字转语音…

以太坊搭建私有链(非常详细!!!)

我的系统&#xff1a;CentOS7 64位 我喜欢宝塔的直观&#xff1a; /www/server/panel/pyenv/bin/python3.7 -m pip install --upgrade pip yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed84…

【APP VTable】和市面上的 Table 组件一样,都是接收表格[] 以及数据源[]

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; uni-app | 小程序开发 开发工具&#xff1a;HBuilderX 这里写目录标题 表格组件USE 表格组件 <template><view class"scroll-table-wrapper"><view class"scroll-table-container"…

使用 excel 快速拼接省市区镇街村居五级区划完整名称

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言数据准备excel 函数附件 前言 之前做了国家区划的映射关系&#xff0c;在其过程中&#xff0c;使用代码…

JAVA-编程基础-12-01-创建多线程的3种方式

JAVA-编程基础-12-创建多线程的3种方式 文章目录 JAVA-编程基础-12-创建多线程的3种方式创建一个类继承Thread类&#xff0c;并重写run方法创建一个类实现Runnable接口&#xff0c;并重写run方法实现Callable接口&#xff0c;重写call()方法&#xff0c;这种方式可以通过Future…

亚马逊云代码AI助手CodeWhisperer使用教程

一、CodeWhisperer 简介 1、CodeWhisperer是一款基于机器学习的通用代码生成器&#xff0c;由Amazon出品&#xff0c;可以给我们提供代码建议。 2、CodeWhisperer 基于各种上下文线索提供建议&#xff0c;包括光标在源代码中的位置、位于光标前面的代码、注释&#xff0c;以及…

MR混合现实情景实训教学系统在旅游管理专业中的应用

在旅游管理专业中&#xff0c;MR混合现实情景实训教学系统的主要应用包括但不限于以下几个方面&#xff1a; 1. 实地考察的替代&#xff1a;对于一些无法实地考察的景点或设施&#xff0c;学生可以通过MR系统进行虚拟参观&#xff0c;从而了解其实际情况。这不仅可以减少时间和…

Banana Pi BPI-W3 RK3588开源硬件开发板 Debian11详解

1. 简介 RK3588从入门到精通Debian 是⼀种完全⾃由开放并⼴泛⽤于各种设备的 Linux 操作系统。Rockchip在官⽅Debian发⾏版的基础上构建和适配了相关硬件功能 2. 环境介绍 硬件环境&#xff1a; ArmSoM-W3 RK3588开发板软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian…

Java中配置RabbitMQ基本步骤

在Java中配置RabbitMQ&#xff0c;需要遵循以下步骤&#xff1a; 1.添加依赖 在项目的pom.xml文件中添加RabbitMQ的Java客户端依赖&#xff1a; <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><versio…