You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用node-opcua实现OPC UA客户端连接多个服务器?

Node-OPCUA 客户端连接多服务器的实现方案

1. node-opcua 是否支持客户端连接多个服务器?

完全支持。node-opcua的客户端设计是每个客户端实例对应一个独立的服务器连接,你只需要创建多个OPCUAClient实例,分别配置不同的服务器端点信息,就能同时连接多个OPC UA服务器,这完全符合OPC UA规范的多连接要求。

2. 具体实现方式

核心思路是为每个目标服务器创建独立的客户端实例,分别处理连接、数据交互和断开流程。下面是一个简洁的实现示例:

步骤说明

  • 为每个服务器定义独立的连接配置
  • 分别初始化客户端实例,处理各自的生命周期(连接、操作、断开)
  • 可通过异步方法并行或串行处理多个客户端的操作

代码示例

const { OPCUAClient, AttributeIds } = require("node-opcua");

// 定义多个服务器的端点与目标节点配置
const serverConfigs = [
  {
    endpointUrl: "opc.tcp://server1.example.com:4840",
    targetNodeId: "ns=2;s=TemperatureSensor1"
  },
  {
    endpointUrl: "opc.tcp://server2.example.com:4840",
    targetNodeId: "ns=2;s=PressureSensor1"
  }
];

// 封装单个客户端的连接与数据读取逻辑
async function handleServerConnection(serverConfig) {
  const client = OPCUAClient.create({
    endpointMustExist: false
  });

  try {
    // 建立服务器连接
    await client.connect(serverConfig.endpointUrl);
    console.log(`已连接到服务器: ${serverConfig.endpointUrl}`);

    // 创建会话
    const session = await client.createSession();
    
    // 读取指定节点的值
    const dataResult = await session.read({
      nodeId: serverConfig.targetNodeId,
      attributeId: AttributeIds.Value
    });

    console.log(`从${serverConfig.endpointUrl}读取到值:`, dataResult.value.value);

    // 关闭会话
    await session.close();
  } catch (err) {
    console.error(`服务器${serverConfig.endpointUrl}操作失败:`, err.message);
  } finally {
    // 断开客户端连接
    await client.disconnect();
    console.log(`已断开与${serverConfig.endpointUrl}的连接`);
  }
}

// 并行处理多服务器连接
async function runMultiClient() {
  await Promise.all(serverConfigs.map(handleServerConnection));
  console.log("所有服务器操作执行完成");
}

runMultiClient();

注意事项

  • 每个客户端实例相互独立,需分别管理其连接状态与资源释放
  • 若需长期保持连接(如订阅实时数据),可在连接成功后维持会话,无需每次操作都重新建立连接
  • 可根据业务需求扩展错误处理逻辑,比如添加连接重试、状态监控机制

内容的提问来源于stack exchange,提问作者Bennison J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:02:07