Network 网络
Network包含实现网络访问的功能块。这些功能块按照不同的协议(HTTP、WebSocket、MQTT等)分组。
HTTP
Node-App提供两种发起HTTP请求的方式:一是以独立的 http GET,直接请求URL数据;二是通过 http client 创建HTTP客户端,再利用客户端 http client GET 发起请求。
两者的不同在于,http GET 使用完整的URL参数发起请求,而HTTP客户端允许用户动态(程序运行时)修改URL中的目标源(协议、主机名和端口)。假设程序需要访问硬件模块(例如ESP32)的HTTP服务。若硬件模块工作在局域网内,则每次启动可能获得不同的IP地址。因此,请求的URL地址也需要相应更改。虽然可以让用户修改 http GET 的url参数来适应变化的IP地址,但需要额外的代码块和界面元素。HTTP客户端提供了一个修改目标源的界面按钮,用以简化此操作。
http GET
http GET 是一个C型函数体形式的代码块。它发起一个HTTP GET请求,请求的URL参数连接于右侧(url)参数槽,返回结果(HTTP Response)的状态码(status)和数据(data)分别保存到指定变量中,其中状态码为数值类型,数据为文本类型。之后,函数体内的代码块开始执行,并由指定的变量获取返回结果。当由于网络故障、连接超时,或URL错误等原因而无法获得响应时,状态码(status)固定为-1
。
http GET 支持JSONP跨源请求。此时,返回数据(data)的类型由JSONP服务端定义。参考浏览器限制 JSONP。
HTTP Respson的状态码定义参考developer.mozilla.org/Status。常见状态码如:
Status | 描述 |
---|---|
200 | OK - 请求成功。 |
301 | Moved Permanently - 重定向已永久更改的URL。 |
400 | Bad Request - 请求错误。 |
401 | Unauthorized - 用户未授权。 |
403 | Forbidden - 禁止访问。 |
404 | Not Found - 找不到请求的资源。 |
500 | Internal Server Error - 服务端错误。 |
属性
- method - 请求方式:
GET
- 发起HTTP GET请求。JSONP
- 以JSONP方式发起跨源请求。
- status@ - 保存返回状态码(数值)的变量名(默认为
Status
)。 - data@ - 保存返回数据(文本或JSONP服务端定义)的变量名(默认为
Data
)。
样例
- http GET查询api.weatherapi.com天气接口,返回状态码保存于
Status
变量,文本数据保存于Data
变量。 - 判断返回状态码是否为成功(
200
OK)。 - 若返回成功,将返回的文本数据转换为JSON对象,并提取其中的图标URL更新
Icon
图片。
在线样例:Http-Weather,Jsonp-Dictionary。
http client
http client(HTTP客户端)是一个HTML控件块,在界面表现为HTML button形式。
ID属性作为界面元素唯一标识,同时也是客户端标识。客户端关联块通过此ID引用对应的HTTP客户端。
用户点击控件按钮 将打开目标源设置界面:
设置项说明见 http client set url originl 。设置信息保存在浏览器本地存储(Local storage)中。
连接CSS类名hidden
可以将控件隐藏,此时,目标源设置由对应的功能块实现。
属性
- ID - HTTP客户端ID。
http client open settings
http client open settings 提供了一种通过代码块打开HTTP客户端设置界面的方式。设置界面通常由用户点击控件按钮 打开。当控件被设置为隐藏模式,或想要以自定义方式(如点击自定义按钮)打开设置界面时,可以使用 http client open settings 打开设置界面。
属性
- ID - HTTP客户端ID。
http client get settings
http client get settings 用于获取HTTP客户端的设置信息,返回数据为JavaScript对象。当客户端未设置时,返回空对象{}
。设置项说明见 http client set url origin 。
属性
- ID - HTTP客户端ID。
http client set url origin
http client set url origin 用于在程序中设置HTTP客户端目标URL源。目标URL源可以由控件界面设置(用户设置),也可由 http client set url origin 块在程序中设置(开发者设置)。
目标URL源以文本形式连接于右侧(origin)参数槽。URL源包括协议、主机以及可选的端口部分,例如:
https://nodematrix.cn
http://192.168.1.100:8080
属性
- ID - HTTP客户端ID。
http client GET
http client GET 与 http GET 类似,不同在于请求参数为URL的路径部分(包括查询参数)。请求参数连接于右侧(path)参数槽,客户端会将path参数与目标源设置的协议、主机名和端口号合成为完整的URL。http client GET 不支持JSONP跨源请求。
属性
- ID - HTTP客户端ID。
- status@ - 保存返回状态码(数值)的变量名(默认为
Status
)。 - data@ - 保存返回数据(文本)的变量名(默认为
Data
)。
WebSocket
WebSocket是一种通信协议,常用于实现客户端(浏览器)与服务器间的实时双向通信。
WebSocket客户端由以下部分构成:
- 界面控件 - websocket client 是客户端的用户界面。
- 事件处理 - 客户端事件包括:连接开始(
start
)、连接成功(connected
)、连接关闭(closed
)和消息接收(receives
),事件将触发对应的事件响应块(when websocket xxx)。 - 功能调用 - 客户端功能包括:设置、连接/断开,以及发送消息。它们由对应的功能调用块实现。
websocket client
websocket client(WebSocket客户端)是一个HTML控件块,在界面表现为HTML group 形式。
ID属性作为界面元素唯一标识,同时也是客户端标识。客户端关联块通过此ID引用对应的WebSocket客户端。
控件内置客户端设置与连接/断开功能,并维护重连和状态指示。用户点击 Setup 按钮将打开目标URL设置界面:
设置项说明见 websocket set url 。设置信息保存在浏览器本地存储(Local storage)中。
点击 Connect 按钮将连接到所设置的URL,触发连接事件,并更新控件的连接状态。通过WebSocket事件响应块可以对事件进行相应处理。
连接CSS类名hidden
可以将WebSocket控件隐藏,此时,控件的操作(设置、连接/断开)由对应功能块实现。该模式适用于由程序控制,不需要用户干预的WebSocket客户端。
属性
- ID - WebSocket客户端ID。
websocket open settings
websocket open settings 提供了一种通过代码块打开WebSocket客户端设置界面的方式。设置界面通常由用户点击控件 Setup 按钮打开。当控件被设置为隐藏模式,或想要以自定义方式(如点击自定义按钮)打开设置界面时,可以使用 websocket open settings 打开设置界面。
属性
- ID - WebSocket客户端ID。
websocket get settings
websocket get settings 用于获取WebSocket客户端的设置信息,返回数据为JavaScript对象。当客户端未设置时,返回空对象{}
。设置项说明见 websocket set url 。
属性
- ID - WebSocket客户端ID。
websocket set url
websocket set url 用于在程序中设置WebSocket客户端的目标URL地址。目标URL可以由控件界面设置(用户设置),也可由 websocket set url 块在程序中设置(开发者设置)。
目标URL以文本形式连接于右侧(url)参数槽。例如:
wss://bemfa.com:9504/wss
ws://192.168.1.100/socket/cmd
属性
- ID - WebSocket客户端ID。
websocket connect
websocket connect 用于在程序中控制WebSocket客户端的连接或断开。
属性
- ID - WebSocket客户端ID。
- action - 动作:
connect
- 连接。disconnect
- 断开连接。
websocket send
websocket send 用于在WebSocket连接成功后发送消息。要发送的文本消息连接于右侧(message)参数槽。
属性
- ID - WebSocket客户端ID。
websocket connect event
websocket connect event 用于响应WebSocket连接相关事件,包括连接开始(starts
)、连接成功(connected
)、连接关闭(closed
)。当WebSocket客户端触发连接相关事件时,程序将跳转到对应的 websocket connect event 块开始执行。
属性
- ID - WebSocket客户端ID。
- event
starts
- 连接开始。当WebSocket客户端发起连接时触发。connected
- 连接成功。当WebSocket客户端成功连接到服务端时触发。closed
- 连接关闭。当WebSocket客户端连接失败或断开时触发。WebSocket异常断开(非主动断开)后,客户端将自动重连,不需要在断开事件中处理。
when websocket receives
when websocket receives 用于响应WebSocket消息接收事件。当WebSocket客户端接收到消息时,消息内容将保存到指定变量中,并触发receives
事件,程序跳转到对应的 when websocket receives 块开始执行。
属性
- ID - WebSocket客户端ID。
- message@ - 保存接收到数据的变量名(默认为
Message
)。
MQTT
MQTT(Message Queuing Telemetry Transport)是专为物联网领域设计的一种轻量级发布/订阅消息传输协议。
MQTT客户端由以下部分构成:
- 界面控件 - mqtt client 是客户端的用户界面。
- 事件处理 - 客户端事件包括:连接开始(
start
)、 连接成功(connected
)、连接关闭(closed
)和消息接收(receives
),事件将触发对应的事件响应块(when mqtt xxx)。 - 功能调用 - 客户端功能包括:设置、连接/断开、订阅主题以及发布消息。它们由对应的功能调用块实现。
在线样例:MQTT-Message
mqtt client
mqtt client(MQTT客户端)是一个HTML控件块,在界面表现为HTML group 形式。
ID属性作为界面元素唯一标识,同时也是客户端标识。客户端关联块通过此ID引用对应的MQTT客户端。
控件内置客户端设置与连接/断开功能,并维护重连和状态指示。用户点击 Setup 按钮将打开客户端设置界面:
设置项说明见 mqtt set options 。设置信息保存在浏览器本地存储(Local storage)中。
点击 Connect 按钮将以设置信息连接MQTT broker,触发连接事件,并更新控件的连接状态。通过MQTT事件响应块可以对事件进行相应处理。连接成功后,可通过功能调用块订阅MQTT主题,或发布MQTT消息。
连接CSS类名hidden
可以将MQTT控件隐藏,此时,控件的操作(设置、连接/断开)由对应功能块实现。该模式适用于由程序控制,不需要用户干预的MQTT客户端。
属性
- ID - MQTT客户端ID。
mqtt open settings
mqtt open settings 提供了一种通过代码块打开MQTT客户端设置界面的方式。设置界面通常由用户点击控件 Setup 按钮打开。当控件被设置为隐藏模式,或想要以自定义方式(如点击自定义按钮)打开设置界面时,可以使用 mqtt open settings 打开设置界面。
属性
- ID - MQTT客户端ID。
mqtt get settings
mqtt get settings 用于获取MQTT客户端的设置信息,返回数据为JavaScript对象。当客户端未设置时,返回空对象{}
。设置项说明见 mqtt set options 。
属性
- ID - MQTT客户端ID。
mqtt set options
mqtt set options 用于在程序中设置MQTT客户端。MQTT客户端可以由控件界面设置(用户设置),也可由 mqtt set options 块在程序中设置(开发者设置)。设置信息以JSON文本形式提供,连接于右侧(options)参数槽。JSON设置数据包括以下键-值对:
- protocol - 连接协议,默认值
wss
。 - protocolVersion - MQTT协议,取值:
3
- MQTT v3.14
- MQTT v3.1.1(默认值)5
- MQTT v5.0
- hostname - MQTT broker主机名。
- port - MQTT端口。
- path - MQTT路径。
- clientId - MQTT客户端ID。
- username - MQTT用户名。
- password - MQTT密码。
属性
- ID - MQTT客户端ID。
mqtt connect
mqtt connect 用于在程序中控制MQTT客户端的连接或断开。
属性
- ID - MQTT客户端ID。
- action - 动作:
connect
- 连接。disconnect
- 断开连接。
mqtt subscribe
mqtt subscribe 用于在MQTT连接成功后订阅主题。主题以文本形式提供,连接于右侧(topic)参数槽。
属性
- ID - MQTT客户端ID。
- qos - 订阅期望的QoS值(Quality of Service)。
mqtt publish
mqtt publish 用于在MQTT连接成功后发布消息。要发布的主题和消息均以文本形式提供,分别连接于右侧主题(topic)及消息(message)参数槽。
属性
- ID - MQTT客户端ID。
- qos - 发布使用的QoS值(Quality of Service)。
mqtt connect event
mqtt connect event 用于响应MQTT连接相关事件,包括连接开始(starts
)、连接成功(connected
)、连接关闭(closed
)。当MQTT客户端触发连接相关事件时,程序将跳转到对应的 mqtt connect event 块开始执行。
此时,一般进行初始主题订阅,或切换相关功能按钮为有效状态。
属性
- ID - MQTT客户端ID。
- event
starts
- 连接开始。当MQTT客户端发起连接时触发。connected
- 连接成功。当MQTT客户端成功连接到服务端(broker)时触发,此时,一般进行初始主题订阅。closed
- 连接关闭。当MQTT客户端连接失败或断开时触发。MQTT异常断开(非主动断开)后,客户端将自动重连,不需要在断开事件中处理。
when mqtt receives
when mqtt receives 用于响应MQTT消息接收事件。当MQTT客户端接收到消息时,消息的主题(topic)和内容(message)将分别保存到指定变量中,并触发receives
事件,程序跳转到对应的 when mqtt receives 块开始执行。
属性
- ID - MQTT客户端ID。
- topic@ - 保存消息主题的变量名(默认为
Topic
)。 - message@ - 保存消息内容的变量名(默认为
Message
)。