1

我正在使用节点 opcua 0.0.64。我试图在我的客户端中使用 opcuaSession 的 write 方法为一个变量写入一个布尔值。一些电话是成功的,但大约 70% 没有。恰好 60 秒后,响应显示“事务已超时”,状态代码为“statusCode”为“未定义错误”。我可以在客户端中执行一些操作吗?运输超时怎么样?我相信它默认设置为10000。

4

1 回答 1

1

如果在会话超时间隔内客户端和服务器之间没有进行任何事务,服务器将断开连接。

为了确保连接保持正常,客户端通常使用 2 种技术:

  • 要么定期发出 ReadRequest 事务(例如读取 ServerStatus)

  • 建立一个空订阅。订阅有一个内置的保持活动机制,它强制客户端和服务器不时地通信至少一个空的 PublishRequest/PublishResponse。

请注意,您可以将 keepSessionAlive: true参数作为参数传递给您的 NodeOPCUA 客户端,以安装定期读取的 ServerStatus。

或者,如果服务器在为请求继续分配的时间内没有回复,则特定 writeRequest 的超时可能是由服务器本身引起的。在这种情况下,这几乎是服务器实现本身的问题。

于 2018-01-04T07:42:25.853 回答