Node-RED WebSocket使用心得(包含客户端和服务端)
发布日期:2021-06-30 10:11:35
浏览次数:4
分类:技术文章
本文共 3507 字,大约阅读时间需要 11 分钟。
具体概念不描述,只讲使用。
Server
WebSocket的服务端不仅可以进行接收信息,还可以主动发送。
分为in与out模块,选择的模式都是监听,即部署之后创建服务。编辑如下:
WebSocket in 模块:
in服务端接收所有的客户端发送的消息。
WebSocket out 模块:
out服务端则发送消息到指定的客户端或者全部客户端。
互相连接,即完成一个基础的服务端:
WebSocket out模块的深入
需要注意的是WebSocket Out模块发送消息是分为两类的。
一类是其他模块如Dashboard等触发的发送消息事件; 一类是由WebSocket In节点的消息触发的发送消息事件。
第一类会自动发送到所有的客户端。
即类似一个基础的触发节点,会将消息发送给所有连接的客户端:
第二类即如果到达此节点的消息是从WebSocket In节点开始的,则该消息将发送回触发流程的客户端;如果 想要发送给全部客户端,则需要将msg._session属性删除。上面介绍的最简单的服务端就是直接将消息发送回触发的客户端:
而发送到全部的,需要添加一个函数:
函数内容也很简单:
Client
分为in与out模块,选择的模式都是连接,即部署之后自动连接服务
WebSocket in模块:
in客户端接收服务器发送的消息。
WebSocket out模块:
out客户端将消息发送到服务器。
简单就可以做出一个例子来:
代码:
[{"id":"a77b18bd.aec008","type":"websocket in","z":"36d77686.7da01a","name":"","server":"9cb2406a.8026b","client":"","x":520,"y":860,"wires":[["f6327eca.1bbf"]]},{"id":"f6327eca.1bbf","type":"websocket out","z":"36d77686.7da01a","name":"","server":"9cb2406a.8026b","client":"","x":1080,"y":860,"wires":[]},{"id":"274fc3e2.c65b0c","type":"comment","z":"36d77686.7da01a","name":"Server","info":"","x":490,"y":800,"wires":[]},{"id":"77c685c2.81362c","type":"websocket out","z":"36d77686.7da01a","name":"","server":"","client":"3a960f68.dfb54","x":940,"y":440,"wires":[]},{"id":"ee1eea5f.e20708","type":"websocket in","z":"36d77686.7da01a","name":"","server":"","client":"3a960f68.dfb54","x":660,"y":580,"wires":[["b82105d2.b1f328"]]},{"id":"6cf0e26a.4f826c","type":"inject","z":"36d77686.7da01a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"AAA\":\"123\"}","payloadType":"json","x":610,"y":440,"wires":[["77c685c2.81362c"]]},{"id":"b82105d2.b1f328","type":"debug","z":"36d77686.7da01a","name":"client debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":970,"y":580,"wires":[]},{"id":"6aeb203e.711d","type":"comment","z":"36d77686.7da01a","name":"Client","info":"","x":570,"y":320,"wires":[]},{"id":"24960693.d6c2ca","type":"inject","z":"36d77686.7da01a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"AAA\":\"123\"}","payloadType":"json","x":670,"y":960,"wires":[["f6327eca.1bbf"]]},{"id":"b947a0e4.fd80f","type":"function","z":"36d77686.7da01a","name":"","func":"delete msg._session;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":790,"y":820,"wires":[[]]},{"id":"32b9357d.f561ba","type":"comment","z":"36d77686.7da01a","name":"将删除_session属性的函数添加到中间,会群发","info":"","x":820,"y":760,"wires":[]},{"id":"9cb2406a.8026b","type":"websocket-listener","path":"/ws/request","wholemsg":"false"},{"id":"3a960f68.dfb54","type":"websocket-client","path":"ws://localhost:1880/ws/request","tls":"","wholemsg":"false"}]
另附Nodejs的一个极为简易的测试用的C/S:
client.js:
//WebSocket实例化var WebSocket = require('ws');var ws = new WebSocket("ws://localhost:1880/ws/request");ws.onopen = function (e) { //成功连接服务器回调 console.log('客户端(client):与服务器的连接已打开') //成功就发送消息 ws.send(JSON.stringify("12321312"));}ws.onmessage = function (event) { //获取服务器发送的消息 console.log("Received Message: " + event.data);};
server.js
var WebSocketServer = require('ws').Server,wss = new WebSocketServer({ port: 1880 });//服务端口8181wss.on('connection', function (ws) { console.log('服务端:客户端已连接'); ws.on('message', function (message) { //打印客户端监听的消息 console.log(message); //再发回去 ws.send(JSON.stringify(message)); });});
转载地址:https://islet.blog.csdn.net/article/details/116699161 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月05日 01时15分31秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
字节vs快手!取消大小周之战
2019-04-30
送一个闲置显示器!
2019-04-30
Oracle 行转列 pivot函数基本用法
2019-04-30
Oracle 行转列 动态出转换的列
2019-04-30
Oracle 显式游标的简单案例
2019-04-30
Oracle字符串分隔符替换(替换奇数个或偶数个)
2019-04-30
Oracle 利用 UTL_SMTP 包发送邮件
2019-04-30
Oracle 自定义函数实现split功能,支持超长字符串和clob类型的分隔
2019-04-30
Oracle 的循环中的异常捕捉和处理
2019-04-30
Oracle通过pivot和unpivot配合实现行列转换
2019-04-30
给Oracle数据库换一个1522端口的监听
2019-04-30
Excel表格数据生成ECharts图表
2019-04-30
阿里云短信服务python版,pyinstaller打包运行时缺少文件
2019-04-30
Oracle的pfile和spfile的一点理解和笔记
2019-04-30
WebService的简单案例记录(Java)
2019-04-30
Html利用PHP与MySQL交互
2019-04-30
dos简单命令
2019-04-30
mysql的安装与卸载与Navicat远程连接
2019-04-30
java实现稀疏数组及将稀疏数组存入硬盘中
2019-04-30