OPC UA(拨号TCP连接192.168.225.225:225被拒绝)

问题描述 投票:0回答:1

我一直在探索 opcua,我有一个简单的 opcua 客户端和服务器应用程序,为此我使用了一个 node-opcua 包,那时我的服务器和客户端工作正常。

我的任务是,我需要在浏览器中运行opcua客户端,因为opcua没有提供任何方法。为此,我从 github 获取了 opcua golang 示例代码,并将其转换为 webAssembly。并使用 javascript fetch API 读取 HTML 文件中转换后的 golang 代码/然后我运行了简单的 HTML 代码以在浏览器中运行 OPC UA 客户端,我在下面给出了该 html

<html>  
    <head>
        <meta charset="utf-8"/>
        <script src="wasm_exec.js"></script>
        <script>
            const go = new Go();
            console.log(go);
            WebAssembly.instantiateStreaming(fetch("<filename>.wasm"), go.importObject).then((result) => {
                go.run(result.instance);
            });
        </script>
    </head>
    <body></body>
</html>

当我在浏览器中运行该 html 代码时,它会抛出错误

dial tcp 192.168.225.225:4840: Connection refused

重现那个问题

  1. 单击并复制服务器端代码。
  2. 点击并复制客户端代码。
  3. 在本地机器上安装 golang。
  4. 将 golang 代码转换为 webAssembly 运行命令 (
    GOOS=js GOARCH=wasm go build -o <filname>.wasm <filename>.go
    ).
  5. 复制上面的HTML代码。并在浏览器中运行它。

我尝试了以下方法

  1. 我在客户端和服务器都使用
    localhost
    作为域名,我得到了像
    could not resolve address localhost:4840
  2. 这样的错误
  3. 在服务器端
    0.0.0.0
    中绑定主机名,并在客户端使用
    localhost
    那个时候我也得到了像
    opcua: could not resolve address localhost:4840
  4. 这样的错误
  5. 当时我在客户端和服务器端都使用了我的私有 IP,我得到了像
    dial tcp 192.168.1.220:4840: Connection refused
    这样的错误。
  6. 我已经在我的客户端应用程序中使用了一些公共 OPC-UA 服务器地址,而不是我的本地机器服务器地址,那次我也得到了像
    dial tcp opc.tcp://opcuademo.sterfive.com:26543: Connection refused
    这样的错误。

我需要在浏览器中运行 OPC UA 客户端,如果您知道解决上述错误的答案,或者是否有其他方法可以完成我的任务,请告诉我?

webassembly opc-ua node-opcua
1个回答
0
投票

问题是您不能在浏览器中使用任何 BSD 套接字。连接将被转换为 websocket。但是没有 opcua 服务器支持 Websocket 作为协议。最好的方法是在您的网络服务器上添加一个 opc 客户端。此客户端通过 websockets 与客户端 js 代码通信,并将值作为 json 解码格式发送。

© www.soinside.com 2019 - 2024. All rights reserved.