码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • NodeRed系列——websoket展示数据


    本文使用nodered创建websocket连接,通过http网页websocket连接nodered展示数据,最后通过网页发送websocket消息给nodered

    本文在以下作者内容上进行修改通过Node-Red在本地网页上实现PLC数据可视化(MySQL+HTML+JavaScript+CSS+WebSocket)_香风冰织的博客-CSDN博客_plc可视化

    目录

    一 配置结果

    二 具体配置

    1. 在nodered配置websocket out给所有客户端发送websocket消息

     2. 创建网页websocket连接nodered,展示数据

    3. nodered配置websocket in接收发送的消息并显示


    一 配置结果

    在nodered配置如下:http://localhost:1880/

    结果如下

    (1)http://localhost:1880/hello

    (2)使用http://www.jsons.cn/websocket/

    连接nodered的websocket效果,自动获取到客户端消息如下

    (3)使用网页客户端发送websocket消息

    nodered显示如下

    二 具体配置

    1. 在nodered配置websocket out给所有客户端发送websocket消息

    (1)inject节点

    (2)random

    新增random插件

    拖拽random控件到工作区,设置From最小值和To最大值

    (3)使用websocket out节点,类型选择连接,url填写ws/request 

    (4) debug节点正常配置

    配置完成后即可使用http://www.jsons.cn/websocket/

    进行连接测试,地址栏输入:ws://localhost:1880/ws/request

     2. 创建网页websocket连接nodered,展示数据

    (1)配置http in进行创建get请求

    (2) 使用template节点创建网页模版 

    代码参考通过Node-Red在本地网页上实现PLC数据可视化(MySQL+HTML+JavaScript+CSS+WebSocket)_香风冰织的博客-CSDN博客_plc可视化

    具体内容

    1. html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8">
    5. <title>数据可视化title>
    6. <style>
    7. #login_click {
    8. margin-top: 40px;
    9. height: 40px;
    10. margin-left: 200px;
    11. }
    12. #login_click a {
    13. text-decoration: none;
    14. background: #67e0e3;
    15. color: #fd666d;
    16. padding: 10px 30px 10px 30px;
    17. font-size: 16px;
    18. font-family: 微软雅黑, 宋体, Arial, Helvetica, Verdana, sans-serif;
    19. font-weight: bold;
    20. border-radius: 30px;
    21. -webkit-transition: all linear 0.30s;
    22. -moz-transition: all linear 0.30s;
    23. transition: all linear 0.30s;
    24. }
    25. #login_click a:hover {
    26. background: #37a2da;
    27. }
    28. style>
    29. <script src="https://cdn.jsdelivr.net/npm/echarts@5.3.2/dist/echarts.js">script>
    30. <script type="text/javascript">
    31. // WebSocket通信代码
    32. var temperature = 0; //定义温度全局变量
    33. function WebSocketTest()
    34. {
    35. if ("WebSocket" in window)
    36. {
    37. // 浏览器支持 WebSocket
    38. alert("调用成功!");
    39. // 连接WebSocket
    40. var ws = new WebSocket("ws://localhost:1880/ws/request");
    41. // 接收数据
    42. ws.onmessage = function (evt)
    43. {
    44. // alert("数据已接收...");
    45. var data = JSON.parse(evt.data);
    46. temperature = data;
    47. console.log(temperature);
    48. };
    49. }
    50. else
    51. {
    52. // 浏览器不支持 WebSocket
    53. alert("您的浏览器不支持 WebSocket!");
    54. }
    55. }
    56. script>
    57. head>
    58. <body>
    59. <div id="main" style="width: 600px;height:400px;">div>
    60. <script>
    61. var mycharts = echarts.init(document.getElementById("main"));
    62. var option = {
    63. series: [
    64. {
    65. type: 'gauge', // 图表类型,这里表示仪表盘
    66. axisLine: {
    67. lineStyle: {
    68. width: 30, // 仪表盘外圈的宽度为30px
    69. color: [
    70. [0.3, '#67e0e3'], // 到30%的颜色
    71. [0.7, '#37a2da'], // 到70%的颜色
    72. [1, '#fd666d'] // 到100%的颜色
    73. ]
    74. }
    75. },
    76. pointer: { // 仪表盘指针设置
    77. itemStyle: {
    78. color: 'auto' // 指针颜色,此处是自动,根据指向的范围变相应的颜色
    79. }
    80. },
    81. axisTick: { // 设置仪表盘上的刻度短线
    82. distance: -30, // 刻度短线的位置
    83. length: 8, // 刻度短线的长度
    84. lineStyle: {
    85. color: '#fff', //刻度短线的颜色
    86. width: 2 //刻度短线的宽度
    87. }
    88. },
    89. splitLine: { // 分割线设置,如: 0-10和10-20之间的分割线
    90. distance: -30, //分割线位置
    91. length: 30, // 分割线长度
    92. lineStyle: {
    93. color: '#fff', // 分割线颜色
    94. width: 4 // 分割线宽度
    95. }
    96. },
    97. axisLabel: { // 仪表盘里圈数字设置
    98. color: 'auto', // 设置颜色,此处是:自动
    99. distance: 40, // 里圈数字的位置
    100. fontSize: 10 // 里圈数字的大小
    101. },
    102. detail: {
    103. valueAnimation: true, // 仪表盘显示的值是否有动画效果
    104. formatter: '{value} ℃', // 仪表盘显示的值和单位
    105. color: 'auto' // 仪表盘显示的值数字的颜色
    106. },
    107. data: [
    108. {
    109. value: temperature // 当前仪表盘数值,实际开发中,这里的值是动态变化的。比如从传感器采集而来
    110. }
    111. ]
    112. }
    113. ]
    114. };
    115. mycharts.setOption(option);
    116. // 每一秒刷新一次表盘
    117. setInterval(function () {
    118. mycharts.setOption({
    119. series: [
    120. {
    121. data: [
    122. {
    123. value: temperature
    124. }
    125. ]
    126. }
    127. ]
    128. });
    129. }, 1000);
    130. script>
    131. <div id="login_click">
    132. <a href="javascript:WebSocketTest()">连接 WebSocketa>
    133. div>
    134. body>
    135. html>

     (3)配置http response节点

    配置完成后,打开浏览器 输入http://localhost:1880/hello

    点击连接websocket,指针随值转动 

    3. nodered配置websocket in接收发送的消息并显示

    (1)配置websocket in

    选择类型为连接,URl填为ws/request 

    (2) debug输出配置

     配置完成后,在json网页发送websocket消息,debug将接收到发送的内容

    http://www.jsons.cn/websocket/

  • 相关阅读:
    vue3 @click那些事
    【MATLAB源码-第78期】基于matlab的可见光通信不同调制方式(OOK,PPM,DPPM,DHPIM)误码率,信道容量分析。
    高等数学(第七版)同济大学 习题10-3 (前9题)个人解答
    Effective Cpp
    [网鼎杯 2018]Comment
    Vue中的数据分页与分页组件设计
    IBM Spectrum LSF 重要的目录和配置文件
    信息收集&WAF识别&蜘蛛头
    代码随想录——比较含退格的字符串
    常见排序算法要点
  • 原文地址:https://blog.csdn.net/zhaolulu916/article/details/126692612
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号