Node-Red 是否支持多请求流(即会话)?

物联网 软件 系统架构 可视化 节点红色
2021-06-11 02:25:42

本周我对Node-Red 进行了一次简短的试运行。我不清楚它是否支持包含多个请求的流。Node-Red 有一个 request-per-flow 或 session-per-flow 模型吗?

在使用基于数据流的业务流程建模编程工具(webMethods 和 Tibco)后,我发现它们的主要功能之一是能够对会话和工作流进行建模。然而,对于大多数物联网项目而言,这些工具相当大,因此如果可以使用 Node-Red 完成类似的事情,那就太好了。

一个后续的问题,万一节点红不支持这一点,是是否有一些简单的工具,支持会话流的图形化建模?

2个回答

简短的回答是肯定的,至少根据这个功能要求

定义“有状态”会话的约定 #63

此请求以提交声明关闭,该提交声明添加了基于会话令牌的 Web 套接字节点。

答案是否定的。

node-red 中的流是非常静态的,没有在第一个请求到来时实例化流的概念,这样每个请求可能都有一个流实例。

也没有内置的会话概念可以让您将流过流的消息与会话相关联。

但是,您可以相对轻松地自己构建这些东西。Node-red 提供了流和全局状态的概念,可以使用flowglobal对象访问它们,请参阅https://nodered.org/docs/writing-functions#storing-data您要做的是向客户端发送 cookie,然后将传入请求与保存的全局或流状态显式关联。然后,您可以根据保存的会话状态编写“会话感知”代码。这在函数节点中运行良好,但是您会遇到一些内置节点的问题,这些节点执行诸如速率限制或拆分和合并消息之类的操作,因为这些节点通常不知道会话概念。

在披萨示例中,您将在流或全局上下文中维护订单的状态,并且您将根据 cookie 值访问相应订单的状态。