NodeRED学习(五)http websoket

news2025/6/17 10:05:46

HTTP定义响应内容:

在这里插入图片描述
在这里插入图片描述

注:可含请求参数

// msg.payload={
//     "demo":"你好"
// }
msg.payload = msg.req.query.content;
return msg;

在这里插入图片描述
在这里插入图片描述

支持浏览器请求测试:IP:1880/(URL)

组件验证请求:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

websocket消息:

工具参考:http://www.jsons.cn/websocket/
地址:ws://IP:1880/ws/request

1、配置websocket out给所有客户端发送websocket消息:
在这里插入图片描述
“安装插件:node-red-node-random”
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、创建网页websocket连接nodered,展示数据
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html>
 
<head>
    <meta charset="utf-8">
    <title>数据可视化</title>
 
    <!-- 按钮样式 -->
    <style>
        #login_click {
            margin-top: 40px;
            height: 40px;
            margin-left: 200px;
        }
 
        #login_click a {
            text-decoration: none;
            background: #67e0e3;
            color: #fd666d;
 
            padding: 10px 30px 10px 30px;
            font-size: 16px;
            font-family: 微软雅黑, 宋体, Arial, Helvetica, Verdana, sans-serif;
            font-weight: bold;
            border-radius: 30px;
 
            -webkit-transition: all linear 0.30s;
            -moz-transition: all linear 0.30s;
            transition: all linear 0.30s;
 
        }
 
        #login_click a:hover {
            background: #37a2da;
        }
    </style>
 
    <script src="https://cdn.jsdelivr.net/npm/echarts@5.3.2/dist/echarts.js"></script>
 
    <script type="text/javascript">
        // WebSocket通信代码
		var temperature = 0;	//定义温度全局变量
		function WebSocketTest()
		{
			if ("WebSocket" in window)
			{
				// 浏览器支持 WebSocket
				alert("调用成功!");
	         
				// 连接WebSocket
				var ws = new WebSocket("ws://IP:1880/ws/request");
	      
				   
				// 接收数据
				ws.onmessage = function (evt) 
				{
					// alert("数据已接收...");
					var data = JSON.parse(evt.data);
				
					 temperature = data;
					 console.log(temperature);
				};
	          
				
			}	      
			else
			{
				// 浏览器不支持 WebSocket
				alert("您的浏览器不支持 WebSocket!");
			}
		}
    </script>
</head>
 
<body>
    <!-- 仪表盘代码 -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script>
        var mycharts = echarts.init(document.getElementById("main"));		  
			var option = {
			  series: [
			    {
			      type: 'gauge',  // 图表类型,这里表示仪表盘
			      axisLine: {   
			        lineStyle: {
			          width: 30,  // 仪表盘外圈的宽度为30px
			          color: [
			            [0.3, '#67e0e3'],  // 到30%的颜色
			            [0.7, '#37a2da'],  // 到70%的颜色
			            [1, '#fd666d']    // 到100%的颜色
			          ]
			        }
			      },
			      pointer: {  // 仪表盘指针设置
			        itemStyle: {
			          color: 'auto'  // 指针颜色,此处是自动,根据指向的范围变相应的颜色
			        }
			      },
			      axisTick: { // 设置仪表盘上的刻度短线
			        distance: -30,  // 刻度短线的位置 
			        length: 8,     // 刻度短线的长度 
			        lineStyle: {
			          color: '#fff',  //刻度短线的颜色
			          width: 2       //刻度短线的宽度
			        }
			      },
			      splitLine: {   // 分割线设置,如: 0-10和10-20之间的分割线
			        distance: -30, //分割线位置
			        length: 30,    // 分割线长度
			        lineStyle: {
			          color: '#fff', // 分割线颜色
			          width: 4  // 分割线宽度
			        }
			      },
			      axisLabel: {     // 仪表盘里圈数字设置
			        color: 'auto',  // 设置颜色,此处是:自动
			        distance: 40,  //  里圈数字的位置
			        fontSize: 10   // 里圈数字的大小
			      },
			      detail: {
			        valueAnimation: true,    // 仪表盘显示的值是否有动画效果
			        formatter: '{value} ℃',   // 仪表盘显示的值和单位
			        color: 'auto'   // 仪表盘显示的值数字的颜色
			      },
			      data: [
			        {
			          value: temperature  // 当前仪表盘数值,实际开发中,这里的值是动态变化的。比如从传感器采集而来
			        }
			      ]
			    }
			  ]
			};
		 mycharts.setOption(option);
		 
		 // 每一秒刷新一次表盘
		setInterval(function () {
		   mycharts.setOption({
		     series: [
		       {
		         data: [
		           {
		             value: temperature
		           }
		         ]
		       }
		     ]
		   });
		 }, 1000);
    </script>
 
    <!-- 连接按钮 -->
    <div id="login_click">
        <a href="javascript:WebSocketTest()">连接 WebSocket</a>
    </div>
 
</body>
 
</html>


在这里插入图片描述
在这里插入图片描述
打开浏览器查看可视化:IP:1880/hi
在这里插入图片描述

(3)配置websocket in接收发送的消息并显示
在这里插入图片描述
在这里插入图片描述
工具端发送消息可以在控制台看到打印输出
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411938.html

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

相关文章

Python学习笔记--循环语句 for 和 while

目前更新中.... &#xff08;一&#xff09; while循环的基本语法 1. 基本格式 while 条件&#xff1a; 条件满足时&#xff0c;做的事情1 条件满足时&#xff0c;做的事情2 …&#xff08;省略&#xff09;… 只要条件满足&#xff0c;会无限循环执行条件需要布尔类型结果…

excel表格的导入和导出(Java+element)

本项目是前端vue3&#xff0c;后端springboot开发 需求为&#xff1a;前端导入表格&#xff0c;后端处理表格存储数据&#xff0c;点击按钮可以导出表格。 上传效果&#xff1a;前端点击上传按钮&#xff0c;会跳出选择文件框&#xff0c;选择文件&#xff0c;点击上传。 导出效…

C语言CRC-16 IBM格式校验函数

C语言CRC-16 IBM格式校验函数 CRC-16校验产生2个字节长度的数据校验码&#xff0c;通过计算得到的校验码和获得的校验码比较&#xff0c;用于验证获得的数据的正确性。基本的CRC-16校验算法实现&#xff0c;参考&#xff1a; C语言标准CRC-16校验函数。 不同厂家通过对输入数…

鸿鹄工程项目管理系统源码 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

这家年销售额309亿的Tier 1,要谈一场千亿新生意

跨入2023年&#xff0c;智能汽车软件赛道更热闹了。 相较于传统汽车开发模式&#xff0c;软件属于分布式ECU工程开发的一部分&#xff0c;由一级供应商作为黑盒提供&#xff0c;软件开发成本等被认为是硬件系统成本的一部分&#xff0c;没有实现单独定价。 如今&#xff0c;“…

Redis 如何使用 RedisCluster 构建高可用集群架构?

文章目录Redis 如何使用 RedisCluster 构建高可用集群架构&#xff1f;什么是 Redis Cluster&#xff1f;哈希槽&#xff08;hash slot&#xff09;一致性保证&#xff08;consistency guarantees&#xff09;如何构建 Redis Cluster&#xff1f;配置环境构建 A&#xff0c;A1 …

int(1) 和 int(10)区别

有个表的要加个user_id字段&#xff0c;user_id字段可能很大&#xff0c; alter table xxx ADD user_id int(1)。 int(1)怕是不够用吧&#xff0c;接下来是一通解释。 我们知道在mysql中 int占4个字节&#xff0c;那么对于无符号的int&#xff0c;最大值是2^32-1 4294967295&a…

一文弄懂Python中的sort和sorted函数

1. 引言 Python中的 sort()和sorted()函数主要用于按升序或降序对数据进行排序。在本文中比较用于列表时&#xff0c;两个函数在编程和语法上的差异。 闲话少说&#xff0c;我们直接开始吧&#xff01; 2. Sort()函数基本用法 用于列表排序的sort函数的语法如下&#xff1a…

java equals和==的区别

目录一、equals1.前言2.重写equals方法二、三、equals和的区别一、equals 1.前言 **当用equals来比较两个引用数据类型时默认比较的是它们的地址值&#xff0c;比如创建两个成员变量完全相同对象A和对象B两个进行比较&#xff0c;比较的是两个对象的地址值是否相等&#xff0c…

从spring boot泄露到接管云服务器平台

0x1前言 在打野的时候意外发现了一个站点存在spring boot信息泄露&#xff0c;之前就有看到一些文章可以直接rce啥的&#xff0c;今天刚好试试。通过敏感信息发现存在accesskey泄露&#xff0c;就想直接通过解密&#xff0c;获取敏感信息&#xff0c;接管云平台。 首先说下这个…

Linux服务器如何清除dns缓存

Linux服务器如何清除dns缓存 DNS缓存是一个临时数据库&#xff0c;用于存储已解释的DNS查询信息。换句话说&#xff0c;每当你访问网站时&#xff0c;你的操作系统和网络浏览器都会保留域名和相应IP地址的记录。 这消除对远程DNS服务器重复查询&#xff0c;并允许你的操作系统…

【实验报告】实验三、图像复原

1. 实验目的 (1) 理解退化模型。 (2) 掌握常用的图像复原方法。 2. 实验内容 (1) 模拟噪声的行为和影响的能力是图像复原的核心。 (2) 空域滤波 实验一 1. 1 产生至少 2 种不同类型的噪声&#xff0c;并绘制原图像、加噪后图像及对应直方图于 一个图形窗口中[subplot(m…

用GPT-4写代码不用翻墙了?Cursor告诉你:可以~~

目录 一、介绍 二、使用方法 三、其他实例 1.正则表达式 2.自动化测试脚本 3.聊聊技术 一、介绍 Cursor主要功能是根据用户的描述写代码或者进行对话&#xff0c;对话的范围仅限技术方面。优点是不用翻墙、不需要账号。Cursor基于GPT模型&#xff0c;具体什么版本不祥&#…

ChatGPT文本框再次升级,打造出新型操作系统

在ChatGPT到来之前&#xff0c;没有谁能够预见。但是&#xff0c;它最终还是来了&#xff0c;并引起了不小的轰动&#xff0c;甚至有可能颠覆整个行业。 从某种程度上说&#xff0c;ChatGPT可能是历史上增长最快的应用程序&#xff0c;仅在两个多月就拥有了1亿多活跃用户&…

2023年4月企业内部定制课程简章

2023年4月企业内部定制课程简章 》》数据治理内训 数据管理基础 数据处理伦理 数据治理 数据架构 数据建模和设计 数据安全 数据集成和互操作 文件和内容管理 参考数据和主数据 数据仓库和商务智能 元数据管理 数据质量 大数据和数据科学 数据管理成熟度评估 数据管理组织与…

js基础之Promise(全面+手写实现)

1. 是什么 Promise是一种异步编程的解决方案&#xff0c;用于处理异步操作并返回结果。 主要作用是解决回调函数嵌套&#xff08;回调地狱&#xff09;的问题&#xff0c;使异步操作更加清晰、易于理解和维护。 2. 怎么用 Promise有三种状态&#xff1a;pending&#xff08;…

(大数据开发随笔8)Hadoop 3.3.x分布式环境部署——补充知识

索引克隆虚拟机SSH免密登录ssh简介免密登录scp命令时间同步克隆虚拟机 克隆&#xff1a;注意要分开放置三个虚拟机的位置 修改克隆机的ip地址 vi /etc/sysconfig/network-scripts/ifcfg-ens33——IPADDR重启网络 systemctl restart networkip addr 查看ip地址 修改克隆机的主…

【STM32学习】直接存储器访问——DMA

【STM32学习】直接存储器访问——DMA零、参考一、对DMA的理解二、DMA通道优先级三、DMA通道x传输数量寄存器(DMA_CNDTRx)四、DMA缓冲区设计零、参考 一个严谨的STM32串口DMA发送&接收&#xff08;1.5Mbps波特率&#xff09;机制 【组件】通用环形缓冲区模块 上述是我的参考…

ServletContext 对象

1.共享数据 ServletContext 对象 先调用对象&#xff0c;获取对象&#xff0c;往里面存数据 package com.kuang.servlet;import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.…

Pandas.read_excel详解

文章目录基础知识语法参数详解-index_col参数详解-header参数详解-usecols参数详解-dtype其他参数多表读取顺带提一句如何用pandas写数据到excel基础知识 pandas 可以读取多种的数据格式&#xff0c;针对excel来说&#xff0c;可以使用read_excel()读取数据&#xff0c;如下&a…