比计划晚了一点,Node-RED 0.5.0 现已可供下载或通过 npm install 安装。请阅读升级说明

新功能

未部署的变更

我们收到的一个反馈是,仅仅改变部署按钮的颜色不足以指示有未部署的变更;对于色盲用户来说,这根本不起作用。

为了改进这一点,我们为那些已经添加或编辑但尚未部署的节点增加了一个新的标记。

Changed node badge

未知节点

当从别处导入一个流时,如果它包含一个你没有安装的节点,我们现在会用一个特殊的未知节点类型来替换缺失的节点,而不是拒绝执行导入。这意味着你可以导入这个流,查看你缺少什么,然后要么安装缺失的节点类型并重新尝试导入,要么删除缺失的节点。

为了让你清楚地知道有未知节点,它们采用了非常独特的样式。

Unknown node type

命令行参数

在之前的版本中,我们增加了将所有用户数据移动到 Node-RED 安装目录之外的位置的功能。这是在 settings.js 文件中配置的,这带来一个问题——这个文件必须存在于安装目录中,我们才能找到它。

在这个版本中,你现在可以将该文件作为命令行参数指向它。

$ node red.js --settings /home/nol/.node-red/settings.js

你可以使用 --settings-s

节点更新

Twitter 节点

Twitter 节点现在可以跟踪特定用户的推文以及已认证用户的私信。这两个功能都使用轮询 API,而不是其他搜索类型所使用的更高效的流式 API。这意味着它们受到 Twitter 相当严格的速率限制。它们大约每分钟检查一次新推文,每两分钟检查一次新私信。

如果你有多个节点使用这些功能,并且都以同一用户身份进行认证,你很可能会达到速率限制,从而无法获取所有你期望的推文。

TCP 节点

在这个版本之前,TCP 节点没有单个连接的概念;TCP 输出节点会向所有连接广播消息。在这个版本中,节点现在是会话感知的。给定一个以 TCP 输入节点开始并以 TCP 输出节点结束的流,输出节点现在可以被配置为仅回复触发该流的连接。

这是一个作为回显(Echo)服务器的流:

A TCP Echo server

[{"id":"6534336a.9acbcc","type":"tcp in","server":"server","host":"","port":"9001","datamode":"stream","datatype":"buffer","newline":"","topic":"","name":"","base64":false,"x":80,"y":140,"z":"e1c9f85b.1e3608","wires":[["2f63c46b.d09c3c"]]},{"id":"c5d83ebc.3a27c","type":"tcp out","host":"","port":"","beserver":"reply","base64":false,"name":"","x":320,"y":140,"z":"e1c9f85b.1e3608","wires":[]},{"id":"2f63c46b.d09c3c","type":"function","name":"","func":"msg.payload = \"You said: \"+msg.payload.toString();

return msg;”,”outputs”:1,”x”:200,”y”:140,”z”:”e1c9f85b.1e3608”,”wires”:[[“c5d83ebc.3a27c”]]}]

部署此流后,你可以 telnet 到 localhost:9001,你输入的任何内容都将被回显。

$ telnet localhost 9001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hi There
You said: Hi There

WebSocket 节点

现在创建由 Node-RED 生成的事件的实时仪表板变得更加容易。WebSocket 节点允许你在网页内发送和接收消息。与 TCP 节点一样,它们是连接感知的。这意味着你可以轻松创建一个流,该流从 WebSocket 连接上的消息开始,执行一些查询,然后通过同一连接返回结果。

其他核心节点更新

  • MQTT 节点现在支持指定用于连接的客户端 ID、用户名和密码。
  • Switch 节点现在有一个“otherwise”(否则)选项,以及一个在找到匹配项后停止检查的选项。这允许构建传统的 if-else 风格的逻辑流。
  • Serial 节点允许你指定一个分隔符来分割传入的数据。它现在有一个选项可以自动将分隔符附加到发送出去的消息上。
  • HTTP Request 节点现在将自动跟随 301 重定向。

新节点

node-red-nodes 仓库已经接受了一些新节点的拉取请求。

  • Snapchat 节点
  • 飞利浦 Hue 节点

下一步计划?

可 npm 安装的节点已经列在待办事项清单上一段时间了;也许是时候我开始着手处理这件事了。

另一个需要解决的问题是更好地将管理 UI 与运行时分离开。目前,你可以使用 httpRoot 来移动管理 UI 的服务位置,并应用基本身份验证。一个不幸的副作用是,如果你保护了管理 UI,你最终也会保护 HTTP 输入节点——这可能不是期望的结果。我们需要将这两者分开,但挑战在于如何以向后兼容的方式做到这一点。

还有一些新节点的拉取请求正在系统中处理。