Skip to content

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描述
200OK - 请求成功。
301Moved Permanently - 重定向已永久更改的URL。
400Bad Request - 请求错误。
401Unauthorized - 用户未授权。
403Forbidden - 禁止访问。
404Not Found - 找不到请求的资源。
500Internal Server Error - 服务端错误。

属性

  • method - 请求方式:
    • GET - 发起HTTP GET请求。
    • JSONP - 以JSONP方式发起跨源请求。
  • status@ - 保存返回状态码(数值)的变量名(默认为Status)。
  • data@ - 保存返回数据(文本或JSONP服务端定义)的变量名(默认为Data)。

样例

  1. http GET查询api.weatherapi.com天气接口,返回状态码保存于Status变量,文本数据保存于Data变量。
  2. 判断返回状态码是否为成功(200 OK)。
  3. 若返回成功,将返回的文本数据转换为JSON对象,并提取其中的图标URL更新Icon图片。

在线样例:Http-WeatherJsonp-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 GEThttp 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 形式。

WS

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 形式。

MQ

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.1
    • 4 - 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)。