重新连接Milo客户端

时间:2018-01-23 14:22:41

标签: opc-ua milo

如果服务器再次出现故障,我希望客户端重新连接到服务器。我可以将SessionActivityListener添加到客户端,如果服务器重新联机,会在SessionInactive和SessionActive上收到通知。但是,当我得到SessionActive并尝试重新订阅时,我收到“安全通道无效”错误消息。

  

14:32:28.209 [ua-netty-event-loop-11]错误oemoschUaTcpClientAcknowledgeHandler - [remote = / 127.0.0.1:53530]收到错误消息:ErrorMessage {error = StatusCode {name = Bad_SecureChannelIdInvalid,value = 0x80220000 ,quality = bad},reason = Bad_SecureChannelIdInvalid(code = 0x80220000,description =“指定的安全通道不再有效。”)}

所以我目前正在做的是,断开客户端并使用与旧客户端相同的订阅创建一个全新的客户端。但我猜这很不错。所以问题是,有没有办法只更新“旧”客户端连接和订阅?

我目前正在使用prosys模拟服务器进行测试

问候, 卢卡斯

1 个答案:

答案 0 :(得分:3)

客户端成功连接后,只要连接断开,它就会自动重新连接。它将尝试恢复旧会话或在必要时自动创建新会话,并尝试在创建新会话时转移订阅。这一切都是为您处理的。

服务器可能会失败或不支持订阅传输,在这种情况下,您需要自己重新创建订阅。您应该向SubscriptionListener添加OpcUaSubscriptionManager并实施onSubscriptionTransferFailed回调,该回调会通知您转移失败,您需要自己重新创建此订阅。