重新连接 Milo 客户端

Reconnect Milo Client

我希望客户端在服务器出现故障并再次启动时重新连接到服务器。我可以向客户端添加一个 SessionActivityListener,如果服务器重新联机,它会在 SessionInactive 和 SessionActive 上收到通知。但是,当我获得 SessionActive 并尝试重新订阅时,我收到一条 "secure channel invalid" 错误消息。

14:32:28.209 [ua-netty-event-loop-11] ERROR o.e.m.o.s.c.h.UaTcpClientAcknowledgeHandler - [remote=/127.0.0.1:53530] Received error message: ErrorMessage{error=StatusCode{name=Bad_SecureChannelIdInvalid, value=0x80220000, quality=bad}, reason=Bad_SecureChannelIdInvalid (code=0x80220000, description="The specified secure channel is no longer valid.")}

所以我目前正在做的是,断开客户端连接并创建一个全新的客户端,其订阅与旧客户端相同。但我想这很老套。所以问题是,有没有办法只更新 "old" 客户端连接和订阅?

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

问候, 卢卡斯

一旦客户端连接成功,它会在连接中断时自动重新连接。它将尝试恢复旧会话或在必要时自动创建新会话,并在创建新会话时尝试转移订阅。这都给你办好了。

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