这个 Node-RED 节点使用原生 C++ 扩展集成了 Fast DDS 库,提供高性能的 DDS(Data Distribution Service)通信能力。
- ✅ 原生性能:使用 C++ 原生扩展,直接调用 Fast DDS API
- ✅ 发布者模式:可以发布 DDS 消息到指定话题
- ✅ 订阅者模式:可以订阅 DDS 话题并接收消息
- ✅ 多域支持:支持不同的 DDS 域ID
- ✅ 实时通信:异步事件驱动的消息处理
- ✅ 互操作性:与其他 DDS 应用程序兼容
- 确保已安装 Fast DDS 库:
# Ubuntu/Debian
sudo apt install libfastdds-dev libfastcdr-dev- 将节点安装到 Node-RED:
cd ~/.node-red
npm install /path/to/node-red-contrib-fastdds- 重启 Node-RED 服务
- 节点名称:自定义节点名称
- 模式:选择发布者(Publisher)或订阅者(Subscriber)
- 话题名称:DDS 通信的话题名称
- 域ID:DDS 域标识符 (0-255)
- 自动启动:节点部署后是否自动启动服务
- 默认消息:没有输入时发布的默认消息内容
// 发送简单字符串消息
msg.payload = "Hello World!";
// 发送结构化消息
msg.payload = {
id: 42,
message: "Structured message"
};
// 控制命令
msg.payload = "start"; // 启动服务
msg.payload = "stop"; // 停止服务
msg.payload = "restart"; // 重启服务订阅者会自动接收话题上的消息,输出格式:
{
payload: {
type: "received",
id: 42,
message: "Hello World!",
timestamp: "2025-06-10T07:43:53.237Z"
},
topic: "DemoTopic",
timestamp: "2025-06-10T07:43:53.237Z"
}{
type: "published",
id: 1,
message: "Hello World!",
timestamp: "2025-06-10T07:43:53.237Z"
}{
type: "received",
id: 42,
message: "Received message",
timestamp: "2025-06-10T07:43:53.237Z"
}{
type: "status",
message: "publisher started",
timestamp: "2025-06-10T07:43:53.237Z"
}{
type: "error",
message: "Error description",
timestamp: "2025-06-10T07:43:53.237Z"
}- 拖拽一个 FastDDS 节点到画布,配置为发布者模式
- 拖拽另一个 FastDDS 节点,配置为订阅者模式,使用相同的话题名称
- 连接 inject 节点到发布者,用于发送测试消息
- 连接 debug 节点到订阅者,查看接收到的消息
可以与其他 DDS 应用程序进行通信:
# 运行 C++ 发布者
./fastdds_publisher
# 在 Node-RED 中配置订阅者节点监听相同话题使用提供的测试脚本验证安装:
cd /home/hy125245/node-red
node simple_test.js预期输出:
✅ 模块加载成功
✅ FastDDSWrapper 可用
✅ 包装器创建成功
✅ 服务启动成功
📤 发布测试消息
数据: { type: 'published', id: 1, message: 'Hello FastDDS!', ... }
✅ 服务已停止
-
模块加载失败
- 检查 Fast DDS 库是否正确安装
- 验证库路径配置
-
服务启动失败
- 检查域ID是否被其他进程占用
- 验证网络配置
-
消息收发异常
- 确认发布者和订阅者使用相同的话题名称和域ID
- 检查 DDS 发现机制是否正常工作
- 启用详细日志:在 Node-RED 设置中启用调试模式
- 使用 debug 节点监控所有输出消息
- 检查节点状态指示器的颜色和文本
- 域分离:使用不同的域ID隔离不同的应用
- QoS 配置:根据需要调整服务质量参数
- 消息大小:保持消息内容简洁,避免过大的数据包
- 基于技术:Fast DDS v3.x, Node-addon-api v7.x
- 支持平台:Linux (已测试), Windows (理论支持)
- 授权协议:MIT
- v1.0.0:初始版本,支持基本的发布订阅功能