【问题标题】:Remembering a callback function in a Node-RED custom node记住 Node-RED 自定义节点中的回调函数
【发布时间】:2016-02-25 08:34:50
【问题描述】:

在 Node-RED 中,我们能够创建自定义节点。它们执行开箱即用的预提供节点未提供的特定工作。有许多社区提供的实例。自定义节点可能希望处理某种新形式的输入事件。让我们想象一下,我们有一种新的网络技术,称为 2TinCans(由一根绳子连接的 2 个锡罐)。如果我们希望使用它来处理请求/响应,我们可能会创建两个新的 Node-RED 节点……一个用于处理输入(请求),一个用于处理输出(响应)。当请求到达时,Node-RED 中运行的 2TinCans 服务器已经在监听传入请求。当收到请求时,节点向下游发送一条新消息。最终,这将到达一个 2TinCans 响应节点,该节点负责将响应发送回相应的原始请求。

这就是问题所在......我们如何维护此对话的“状态”,以便响应节点知道将响应发送给正确的伙伴?

【问题讨论】:

    标签: node-red


    【解决方案1】:

    我们需要维护可以由最终响应节点使用的原始传入请求节点的状态和信息。

    在 Node-RED 环境中,我们有许多上下文对象,包括每个节点的上下文、每个流的上下文和全局上下文。但是,架构不允许将这些用于我们的目的。本地节点上下文对我们没有用处,因为它将保存传入请求节点的上下文,但响应节点无法寻址。流和全局上下文都是“单例”……这意味着我们保存在那里的任何数据都会被下一次调用覆盖。由于原则上可能有许多并发流正在执行,我们可以想象同时处理两个并行请求,它们会相互影响对方的响应。

    将正确的状态信息传递给下游响应节点的正确方法是将该信息添加到流经线路的消息 (msg) 中。这可以是一个属性的形式,它是一个回调 JavaScript 对象,响应节点可以调用该对象来完成对话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      相关资源
      最近更新 更多