• 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/

  • 相关阅读:
    1002 A+B for Polynomials
    645. 错误的集合
    数据的存储--Redis缓存存储
    什么是堆栈和队列?如何实现它们?
    IDA报错decomplication failure: too big function的解决方案
    第三章 常用布局
    github使用技巧
    解决mybatis用Map返回的字段全变大写的问题
    ATM机模拟系统
    多线程之线程池
  • 原文地址:https://blog.csdn.net/zhaolulu916/article/details/126692612