3

如果服务器再次关闭并再次启动,我希望客户端重新连接到服务器。我可以向客户端添加一个 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="指定的安全通道不再有效。")}

所以我目前正在做的是,断开客户端并创建一个与旧客户端具有相同订阅的全新客户端。但我想多数民众赞成在相当hacky。所以问题是,有没有办法只更新“旧”客户端连接和订阅?

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

问候,卢卡斯

4

1 回答 1

4

一旦客户端成功连接,它会在连接断开时自动重新连接。如有必要,它将尝试恢复旧会话或自动创建新会话,并在创建新会话时尝试传输订阅。这一切都为您处理。

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

于 2018-01-26T15:38:05.950 回答