一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第4天,点击查看活动详情。
上一期我们讲到了Node-RED中功能节点的使用。接下来咱们继续看网络类的节点。如图总共有12个节点,分别处理mqtt、http、websocket、tcp、udp类型的网络请求。
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节点响应请求。
http response
将响应发送回从HTTP输入节点接收的请求。。
输入**:**
- payload:响应的正文。
- statusCode:如果设置,则用作响应状态代码。默认值:200。
- headers:如果设置,则提供HTTP头以包含在响应中。
- cookies:如果设置,则可用于设置或删除cookie。
配置:
- 名称:节点名称。
- 状态码:默认200
- 头:header
示例:
在上一个示例的基础上添加两个节点:
- 模板节点,配置模板输出到payload中
- http response节点,响应请求
- 效果:
-
示例代码:
[{"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
,PATCH
或DELETE
之一 - 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接口,并将结果输出到调试窗口。
websocket-listener
在配置websocket in 、websocket out节点前需要配置websocket server。websocket server 负责接收和发送消息,配置成功后就可以进行websocket连接了。配置成功后可以在右侧配置区看到。服务地址默认为:ws://localhost:1880/{路径}
配置:
- 路径:配置websocket地址
- 发送/接受:发送的信息,有效荷载表示发送payload中的数据;完整数据表示发送整个消息
websocket in
WebSocket输入节点。
配置:
- 类型:监听
- 路径:选择配置的websocket server
- 名称:节点名称。
websocket out
WebSocket输出节点。默认情况下,msg.payload
将通过WebSocket发送。可以将套接字配置为将整个msg
对象编码为JSON字符串,然后通过WebSocket发送。
配置:
- 类型:监听
- 路径:选择配置的websocket server
- 名称:节点名称。
示例:
- 效果
创建websocket in 、websocket out两个节点,然后使用在线的websocket连接工具连接并发送消息。
- 示例代码
[{"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.ip
和msg.port
中设置接收到的消息的IP地址和端口。
**注意:**在某些系统上,您可能需要root或管理员权限才能使用低于1024的端口或广播。
配置:
- 类型:监听
- 端口:端口
- 输出:Buffer、字符串、Base64编码字符串。
- 主题:主题。
- 名称:节点名称。
udp out
该节点将msg.payload
发送到指定的UDP主机和端口。支持组播。
配置:
- 发送一个:udp信息、广播信息、组播信息、端口
- 组:ip地址
- 名称:节点名称。