node_red转发tcp数据到不同的客户端

17 篇文章 1 订阅
5 篇文章 1 订阅

创建节点

在这里插入图片描述

图对应代码

[
    {
        "id": "17969ffdb6285212",
        "type": "tab",
        "label": "流程 1",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "a4fa3965c4d7f20f",
        "type": "debug",
        "z": "17969ffdb6285212",
        "name": "server",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 570,
        "y": 340,
        "wires": []
    },
    {
        "id": "7cd897a932b7cd11",
        "type": "tcp in",
        "z": "17969ffdb6285212",
        "name": "",
        "server": "server",
        "host": "",
        "port": "1882",
        "datamode": "stream",
        "datatype": "utf8",
        "newline": "",
        "topic": "",
        "base64": false,
        "tls": "",
        "x": 80,
        "y": 400,
        "wires": [
            [
                "99f3358137a547cc",
                "1eafab2dda6a064c"
            ]
        ]
    },
    {
        "id": "581c453726647ccb",
        "type": "function",
        "z": "17969ffdb6285212",
        "name": "LOGIN",
        "func": "var payload = msg.payload;\n\nif(payload.cmd == 100)//登录\n{\n    // store the value back\n    context.set(payload.imei, msg._session);//保存imei 对应id\n}\n\nif(payload.cmd == 101)//请求呼叫对方\n{\n    var session = context.get(payload.to)||0;//根据对方imie查询session id\n    if(session == 0)\n    {\n        return;\n    }\n    msg._session = session; //找到对方session id\n\n    msg.payload = payload;//数据直接转发给对方\n}\n\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 380,
        "y": 340,
        "wires": [
            [
                "a4fa3965c4d7f20f",
                "129ae15bee5723e7"
            ]
        ]
    },
    {
        "id": "99f3358137a547cc",
        "type": "debug",
        "z": "17969ffdb6285212",
        "name": "client",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "_session",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 250,
        "y": 600,
        "wires": []
    },
    {
        "id": "1eafab2dda6a064c",
        "type": "json",
        "z": "17969ffdb6285212",
        "name": "",
        "property": "payload",
        "action": "",
        "pretty": false,
        "x": 230,
        "y": 340,
        "wires": [
            [
                "581c453726647ccb",
                "28c2a4ef6d68c9a8"
            ]
        ]
    },
    {
        "id": "28c2a4ef6d68c9a8",
        "type": "debug",
        "z": "17969ffdb6285212",
        "name": "js",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 370,
        "y": 260,
        "wires": []
    },
    {
        "id": "129ae15bee5723e7",
        "type": "json",
        "z": "17969ffdb6285212",
        "name": "",
        "property": "payload",
        "action": "",
        "pretty": false,
        "x": 370,
        "y": 420,
        "wires": [
            [
                "c28bb1f9386c906c"
            ]
        ]
    },
    {
        "id": "c28bb1f9386c906c",
        "type": "tcp out",
        "z": "17969ffdb6285212",
        "name": "",
        "host": "",
        "port": "",
        "beserver": "reply",
        "base64": false,
        "end": false,
        "tls": "",
        "x": 370,
        "y": 500,
        "wires": []
    }
]

函数处理

var payload = msg.payload;

if(payload.cmd == 100)//登录
{
    // store the value back
    context.set(payload.imei, msg._session);//保存imei 对应id
}

if(payload.cmd == 101)//请求呼叫对方
{
    var session = context.get(payload.to)||0;//根据对方imie查询session id
    if(session == 0)
    {
        return;
    }
    msg._session = session; //找到对方session id

    msg.payload = payload;//数据直接转发给对方
}

return msg;

测试

A发送指令登录

在这里插入图片描述

{"cmd":100,"imei":"862838050007731"}
B发送指令登录

在这里插入图片描述

{"cmd":100,"imei":"860311031079866"}
B发送指令请求通话

测试设备B

{"cmd":101,"from":"860311031079866","to":"862838050007731"}

A接收到请求通话的指令
测试设备A

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个时候网上相对于Node-RED的资料也比较少,只知道它是IBM公司的一个开源项目。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的IoT2000,研华公司的WISE PaaS 网关,美国OPTO 22等设备中都安装了Node-RED,表明它在工业物联网和控制中已经广泛应用了。 那么工业物联网为什么要用它?它又处于工业物联网那个层次?它具有哪些特性?它帮助物联网解决了什么问题?为什么说它是柔性动态可重构的解决方案呢? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 本门课程,老师将带领你从Node-RED的发展,工业物联网定位开始讲解,并带领着大家进行手把手安装Node-RED,实际操作演练Node-RED,并搭建一个物联网小平台,给大家带来更好的学习效果。  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开:Node-RED入门Node-RED安装与配置Node-RED教学实战Node-RED的优势与不足Node-RED能为我们带来什么Node-RED总结与展望

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值