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

Node.js OPC-UA服务器提示找不到合适端点问题求助

问题

我通过以下代码创建了Node.js OPC-UA服务器:

var opcOptions = {
        hostname: options.opcHost || "127.0.0.1",
        port: options.opcPort || 4334,
        resourcePath: options.opcName || "opcua",
        buildInfo: {
            productName: "OPCUA",
            buildNumber: "0.1",
            buildDate: new Date()
        }
    }

var server = new opcua.OPCUAServer(opcOptions);
server.start(function (err) {
    console.log("OPC Server is now available at: " + endpointUrl + " ( press CTRL+C to stop)");
})

控制台显示服务器可用地址为opc.tcp://localhost:4334/opcua,但每当OPC-UA客户端创建会话连接到服务器时,服务器日志都会输出:

10:45:21.095Z :opcua_server                  :443   Cannot find suitable endpoints in available endpoints. endpointUri = opc.tcp://192.168.0.10:4334/opcua

实际OPC-UA客户端运行无异常,想了解如何消除这条日志提示?

解决方法

这条日志的核心原因是:服务器仅绑定了127.0.0.1/localhost的端点,但客户端使用局域网IP192.168.0.10发起连接,服务器的端点列表中没有匹配项,因此抛出警告。以下是几种可行的解决方式:

1. 绑定所有网络接口(推荐)

将服务器配置中的hostname改为0.0.0.0,这样服务器会自动绑定所有可用的本地网络接口,并生成对应所有IP的端点:

var opcOptions = {
        hostname: options.opcHost || "0.0.0.0", // 修改为0.0.0.0
        port: options.opcPort || 4334,
        resourcePath: options.opcName || "opcua",
        buildInfo: {
            productName: "OPCUA",
            buildNumber: "0.1",
            buildDate: new Date()
        }
    }

重启服务器后,端点列表会包含192.168.0.10对应的地址,客户端连接时就能匹配到正确端点,警告日志会消失。

2. 手动添加指定端点

如果不想绑定所有接口,可以在配置中显式添加客户端使用的端点URL,确保其包含在服务器的端点列表内:

var opcOptions = {
        hostname: options.opcHost || "127.0.0.1",
        port: options.opcPort || 4334,
        resourcePath: options.opcName || "opcua",
        buildInfo: {
            productName: "OPCUA",
            buildNumber: "0.1",
            buildDate: new Date()
        },
        endpoints: [
            // 添加客户端使用的端点
            {
                endpointUrl: "opc.tcp://192.168.0.10:4334/opcua",
                securityMode: opcua.MessageSecurityMode.None,
                securityPolicy: opcua.SecurityPolicy.None
            },
            // 保留原有本地端点
            {
                endpointUrl: "opc.tcp://localhost:4334/opcua",
                securityMode: opcua.MessageSecurityMode.None,
                securityPolicy: opcua.SecurityPolicy.None
            }
        ]
    }

注意要保证端点的securityMode和securityPolicy与客户端配置一致,避免出现连接异常。

3. 降低日志级别(临时方案)

如果只是想临时屏蔽警告,可以调整node-opcua的日志级别,只显示错误信息:

const opcua = require("node-opcua");
// 将日志级别设为error,屏蔽警告类信息
opcua.setLogLevel("error");

这种方法只是隐藏日志,并未解决端点不匹配的根源问题,仅适合临时场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:30:26