如何配置Node-RED的TCP Out节点实现成功发送后返回响应与消息?
解决Node-RED中TCP Out节点带响应回传原消息的配置方案
核心流程设计
- MQTT In节点:接收外部请求消息
- 函数节点:保存原始消息内容,避免后续节点覆盖
- TCP Out节点:配置为请求-响应模式,发消息到TCP服务器并接收响应
- 函数节点:合并TCP响应与原始消息
- MQTT Out节点:(可选)把合并后的结果回传给请求方
详细配置步骤
1. 保存原始消息
在MQTT In和TCP Out之间加一个函数节点,代码如下:
// 深拷贝原始消息到自定义字段,防止后续节点覆盖 msg.originalMsg = JSON.parse(JSON.stringify(msg)); return msg;
2. 配置TCP Out节点
双击TCP Out节点,调整这些配置:
- 服务器:填TCP服务器的IP和端口(比如
192.168.1.100:8080) - 发送模式:选
请求响应(Request Response) - 响应终止符:根据TCP服务器的响应格式设置,比如换行符
\n或\r\n,保证Node-RED能正确识别响应结束 - 输出:选
完整响应(Full Response)
3. 合并响应与原始消息
在TCP Out节点后再加一个函数节点,代码示例:
// 按需求合并TCP响应和原始请求内容 msg.payload = { tcp服务器响应: msg.payload, 原始请求内容: msg.originalMsg.payload }; // 也可以直接把原始消息字段附加到当前msg,按需调整结构 return msg;
4. 调试与排查
- 部署后用MQTT客户端发测试消息,通过Debug节点看输出
- 如果收不到TCP响应,检查响应终止符是否和服务器返回格式匹配
- 要是原始消息丢失,确认第一步的深拷贝是否生效,避免浅拷贝导致的引用覆盖
关于TCP Request节点的问题排查
之前用TCP Request节点失败,大概率是这几个原因:
- 超时设置太短:默认超时5秒,服务器响应慢的话要调大超时时间
- 终止符不匹配:请求和响应的终止符必须和服务器要求一致,比如在
发送前添加字段填\n - 消息格式不对:部分TCP服务器要求消息结尾带特定终止符,要在请求消息里补上
内容的提问来源于stack exchange,提问作者Shershah
相关产品推荐
相关产品推荐

