NODE-RED (Error: Cannot set headers after they are sent to the client) multiple devices sending request
NODE-RED (Error: Cannot set headers after they are sent to the client) multiple devices sending request
我通过 http 连接使用 IBM 云 AI 在 node-red 上创建了一个聊天机器人流,我遇到了以下问题,当在不同的 chats/accounts 中同时发送消息时,出现此错误:“错误:发送给客户端后无法设置 headers”。
我知道这与它不能被覆盖的请求有关。
但是,如何让多个设备访问同一个流而不干扰已经在进行中的请求呢?
我正在模拟通过 facebook messenger 和 instagram 发送消息
感谢抽空
最后一个更改节点意味着您将 msg.res
字段存储在某处并将其放回原处。
我猜你正在使用相同的上下文变量来执行此操作,所以它会被第二次调用覆盖,所以这两个事件都尝试在最后一个 msg.res
上响应,而第二个失败,因为它们可以只能使用一次
如果流中的所有节点都正常运行并且没有丢弃 msg
属性,则不需要执行此操作。如果有节点丢弃属性,那么您应该向它的作者提出问题以修复它。
与此同时,您需要确保每次调用都跟踪它自己的 msg.res
,这可能意味着将它存储在一个唯一的 ID 下(可能 msg._id
但如果一个节点正在丢弃属性,这可能也改变)到他们都响应正确的会话。
正如@hardillb 所说,错误的原因是您的流程在切换节点处分叉。这意味着当只允许一个时,您将两个 http 响应发送回调用客户端。
Watson Assistant 节点将其响应放在 msg.payload
中,它不会重置、更新或删除任何其他字段。
我怀疑您不需要分叉,在这种情况下,您可以将流从 set msg.res
传递到模板和函数节点。
您的分叉可能唯一需要保留的是 msg.payload
,在这种情况下,您可以将其保存在流上下文中,或者保存在其他 msg
字段中,例如。 msg.mypayload
.
我通过 http 连接使用 IBM 云 AI 在 node-red 上创建了一个聊天机器人流,我遇到了以下问题,当在不同的 chats/accounts 中同时发送消息时,出现此错误:“错误:发送给客户端后无法设置 headers”。 我知道这与它不能被覆盖的请求有关。 但是,如何让多个设备访问同一个流而不干扰已经在进行中的请求呢?
我正在模拟通过 facebook messenger 和 instagram 发送消息
感谢抽空
最后一个更改节点意味着您将 msg.res
字段存储在某处并将其放回原处。
我猜你正在使用相同的上下文变量来执行此操作,所以它会被第二次调用覆盖,所以这两个事件都尝试在最后一个 msg.res
上响应,而第二个失败,因为它们可以只能使用一次
如果流中的所有节点都正常运行并且没有丢弃 msg
属性,则不需要执行此操作。如果有节点丢弃属性,那么您应该向它的作者提出问题以修复它。
与此同时,您需要确保每次调用都跟踪它自己的 msg.res
,这可能意味着将它存储在一个唯一的 ID 下(可能 msg._id
但如果一个节点正在丢弃属性,这可能也改变)到他们都响应正确的会话。
正如@hardillb 所说,错误的原因是您的流程在切换节点处分叉。这意味着当只允许一个时,您将两个 http 响应发送回调用客户端。
Watson Assistant 节点将其响应放在 msg.payload
中,它不会重置、更新或删除任何其他字段。
我怀疑您不需要分叉,在这种情况下,您可以将流从 set msg.res
传递到模板和函数节点。
您的分叉可能唯一需要保留的是 msg.payload
,在这种情况下,您可以将其保存在流上下文中,或者保存在其他 msg
字段中,例如。 msg.mypayload
.