07_Node-RED_节点使用_网络节点

865 阅读8分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情

上一期我们讲到了Node-RED中功能节点的使用。接下来咱们继续看网络类的节点。如图总共有12个节点,分别处理mqtt、http、websocket、tcp、udp类型的网络请求。

1.png

network(网络)

mqtt in

连接到MQTT代理并订阅来自指定主题的消息

配置:

  • 服务端:配置mqtt地址,点击右侧按钮可以对服务端进行详细配置,例如配置mqtt server地址、tsl、账号密码等
  • Action:订阅的主题可以选择订阅指定主题或动态订阅,订阅主题可以包括MQTT通配符(+:一个级别,#:多个级别)
  • QoS:服务质量:0,最多一次;1,最少一次;2,只一次
  • 输出:配置输出格式
  • 名称:配置节点名称

输出:

  • payload:如果不是二进制buffer的话就是字符串。
  • topic:MQTT主题,使用/作为层次结构分隔符。
  • qos:QoS服务质量:0, 最多一次; 1, 最少一次; 2, 只一次。
  • retain:值为true时表示消息已保留且可能是旧的。

mqtt out

连接到MQTT代理并发布消息。

配置:

  • 服务端:配置mqtt地址,点击右侧按钮可以对服务端进行详细配置,例如配置mqtt server地址、tsl、账号密码等
  • 主题:要发布的MQTT主题
  • QoS:服务质量:0,最多一次;1,最少一次;2,只一次
  • 保留:是否将消息保留在代理上
  • 名称:配置节点名称

输入:

  • payload:如果不是二进制buffer的话就是字符串。
  • topic:MQTT主题,使用/作为层次结构分隔符。
  • qos:QoS服务质量:0, 最多一次; 1, 最少一次; 2, 只一次。
  • retain:值为true时表示消息已保留且可能是旧的。

提示: 若希望通过msg属性对topic(信息), qos及retain(保留)进行设置, 则将上述项留白有效

http in

创建用于创建Web服务的HTTP端点。使用这个节点我们可以接收外部的http请求。请求参数通过输出传到流中。

输出**:**

  • payload:GET请求包含任何查询字符串参数的对象。或者包含HTTP请求正文。
  • req:HTTP请求对象。该对象包含有关请求信息的多个属性。 • body - 传入请求的正文。格式将取决于请求。 • headers - 包含HTTP请求标头的对象。 • query - 包含任何查询字符串参数的对象。 • params - 包含任何路由参数的对象。 • cookies - 包含请求cookie的对象。 • files - 如果节点启用了文件上传,则为包含了上传的文件的对象
  • res:HTTP响应对象。此属性不应直接使用;HTTP Response节点记录了如何响应请求。该属性必须保留在传递给响应节点的消息上。

配置:

  • 请求方式:GET POST PUT DELETE PATCH
  • URL:接口地址。
  • 名称:节点名称。

示例:

如图配置了一个GET http in节点,并将节点数据通过debug节点输出出来,在浏览器直接输入:http://localhost:1880/getTest?message=发送请求,在debug区域输出。

注意:http in节点不会对请求进行响应,需要配合http response节点响应请求。

2.png

http response

将响应发送回从HTTP输入节点接收的请求。。

输入**:**

  • payload:响应的正文。
  • statusCode:如果设置,则用作响应状态代码。默认值:200。
  • headers:如果设置,则提供HTTP头以包含在响应中
  • cookies:如果设置,则可用于设置或删除cookie。

配置:

  • 名称:节点名称。
  • 状态码:默认200
  • 头:header

示例:

在上一个示例的基础上添加两个节点:

  • 模板节点,配置模板输出到payload中

3.png

  • http response节点,响应请求

4.png

  • 效果

5.png

  • 示例代码:

    [{"id":"31b7f3dbe0acc949","type":"tab","label":"流程 1","disabled":false,"info":"","env":[]},{"id":"0a5bcb13afc758c9","type":"http in","z":"31b7f3dbe0acc949","name":"getTest","url":"/getTest","method":"get","upload":true,"swaggerDoc":"","x":110,"y":200,"wires":[["27ab446d357ef8f3"]]},{"id":"0168e8b62e961504","type":"http response","z":"31b7f3dbe0acc949","name":"response","statusCode":"","headers":{},"x":420,"y":200,"wires":[]},{"id":"27ab446d357ef8f3","type":"template","z":"31b7f3dbe0acc949","name":"转换","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"receive message: {{payload.message}} !","output":"str","x":280,"y":320,"wires":[["0168e8b62e961504"]]}]
    

http request

发送HTTP请求并返回响应。

输入:

  • url:如果未在节点中配置,则此可选属性设置请求的url。
  • method:如果未在节点中配置,则此可选属性设置请求的HTTP方法。必须是GET,PUT,POST,PATCHDELETE之一
  • cookies:如果设置,则可用于发送带有请求的cookie。
  • payload:发送为请求的正文。
  • *rejectUnauthorized:*如果设置为false,则允许对使用自签名证书的https站点进行请求。
  • *followRedirects:*如果设置为false,则阻止遵循重定向(HTTP 301)。默认情况下为true
  • *requestTimeout:*如果设置为正数毫秒,将覆盖全局设置的httpRequestTimeout参数。

输出:

  • payload:响应的正文。可以将节点配置为以字符串形式返回主体,尝试将其解析为JSON字符串或将其保留为二进制buffer。
  • statusCode:响应的状态码,如果请求无法完成,则返回错误码。
  • headers:包含响应头的对象。
  • responseUrl:如果在处理请求时发生任何重定向,则此属性为最终重定向的URL。否则则为原始请求的URL。
  • responseCookies:如果响应包含cookie,则此属性是每个cookie的‘名称/值’键值对的对象。
  • redirectList:如果请求被重定向了一次或多次,则累积的信息将被添加到此属性。“location”是下一个重定向目标。cookie是从重定向源返回的cookie。

配置:

  • 请求方式:GET POST PUT DELETE PATCH
  • URL:接口地址。
  • 名称:节点名称。

示例:

添加http请求,请求上一个示例中的getTest接口,并将结果输出到调试窗口。

6.png

websocket-listener

在配置websocket in 、websocket out节点前需要配置websocket server。websocket server 负责接收和发送消息,配置成功后就可以进行websocket连接了。配置成功后可以在右侧配置区看到。服务地址默认为:ws://localhost:1880/{路径}

配置:

  • 路径:配置websocket地址
  • 发送/接受:发送的信息,有效荷载表示发送payload中的数据;完整数据表示发送整个消息

7.png

websocket in

WebSocket输入节点。

配置:

  • 类型:监听
  • 路径:选择配置的websocket server
  • 名称:节点名称。

websocket out

WebSocket输出节点。默认情况下,msg.payload将通过WebSocket发送。可以将套接字配置为将整个msg对象编码为JSON字符串,然后通过WebSocket发送。

配置:

  • 类型:监听
  • 路径:选择配置的websocket server
  • 名称:节点名称。

示例:

  • 效果

创建websocket in 、websocket out两个节点,然后使用在线的websocket连接工具连接并发送消息。

8.png

9.png

  • 示例代码
[{"id":"31b7f3dbe0acc949","type":"tab","label":"流程 1","disabled":false,"info":"","env":[]},{"id":"73dd018da9aada6b","type":"websocket in","z":"31b7f3dbe0acc949","name":"","server":"4bf880fa14600802","client":"","x":130,"y":280,"wires":[["4fcbf2a845ee7e9a"]]},{"id":"4fcbf2a845ee7e9a","type":"websocket out","z":"31b7f3dbe0acc949","name":"","server":"4bf880fa14600802","client":"","x":410,"y":280,"wires":[]},{"id":"4bf880fa14600802","type":"websocket-listener","path":"/ws/wstest","wholemsg":"false"}]

tcp in

提供TCP输入选择。可以连接到远程TCP端口,或接受传入连接。

配置:

  • 类型:监听、端口。
  • 输出:字符串、单一。
  • 主题:主题。
  • 名称:节点名称。

tcp out

提供TCP输出的选择。可以连接到远程TCP端口,接受传入的连接,或回复从TCP In节点收到的消息。

配置:

  • 类型:连接、端口、服务
  • 名称:节点名称。

udp in

UDP输入节点。在msg.payload中生成Buffer,字符串或Base64编码的字符串。支持组播。

msg.ipmsg.port中设置接收到的消息的IP地址和端口。

**注意:**在某些系统上,您可能需要root或管理员权限才能使用低于1024的端口或广播。

配置:

  • 类型:监听
  • 端口:端口
  • 输出:Buffer、字符串、Base64编码字符串。
  • 主题:主题。
  • 名称:节点名称。

udp out

该节点将msg.payload发送到指定的UDP主机和端口。支持组播。

配置:

  • 发送一个:udp信息、广播信息、组播信息、端口
  • 组:ip地址
  • 名称:节点名称。