milo opc ua客户端什么时候调用onServiceFault?

When is onServiceFault called in milo opc ua client?

我有一个 milo opc ua 客户端并使用 client.addFaultListener(this) 添加了一个故障侦听器,我已经重写了 onServiceFault 方法(以便它实现 ServiceFaultListener)。

当我关闭我的 opc ua 服务器时,我只收到来自 milo 的消息: [警告][org.eclipse.milo.opcua.sdk.cli] [4] Keep Alive failureCount=1 超过 failuresAllowed=0 但是我的故障监听器没有被执行。

milo在什么情况下执行onServiceFault监听?

我想我现在可以自己回答我的问题了:例如,当服务器连接丢失并且 milo 重新连接但订阅传输失败时调用它,然后当此无效订阅被使用时,milo 将执行状态为 Bad_SubscriptionIdInvalid.

的 ServiceFault
ServiceFault(responseHeader=ResponseHeader(timestamp=DateTime{utcTime=132556030188286769, javaDate=Wed Jan 20 08:56:58 CET 2021}, requestHandle=116, serviceResult=StatusCode{name=Bad_SubscriptionIdInvalid, value=0x80280000, quality=bad}, serviceDiagnostics=null, stringTable=[], additionalHeader=ExtensionObject{encoded=ByteString{bytes=null}, encodingId=NodeId{ns=0, id=0}})) 

当客户端实际收到来自服务器的 ServiceFault 响应时调用它,这可能发生在多种情况下,其中之一是服务器不支持您调用的服务。

像您那样关闭服务器应该会导致 onSessionInactive 在您添加到客户端的任何 SessionListener 上被调用。