Дескриптор Eclispe Milo отсутствует в одноразовом запросе ActivateSessionRequest - PullRequest
0 голосов
/ 16 ноября 2018

Я использую Eclipse Milo (0.2.3) в моем проекте для связи с OPC UA.Участниками OPC UA являются клиент (написанный с использованием Eclipse Milo) и сервер, работающий на удаленной машине и не реализованный с использованием Milo).

Я могу нормально подключить клиента к серверу, и еслиудаленный сервер выключен, я могу автоматически переподключить клиента, как только сервер снова станет доступным.

Однако после обновления программного обеспечения сервера клиент больше не может переподключиться, и он залилсервер со следующими сообщениями:

  • Создать запрос сеанса
    • Сервер может создать сеанс
  • Активировать запрос сеанса
    • Сервер отправляет ответ Activate Session, в котором ServerNonce отсутствует, а результат службы «плохой»

Это заставляет клиента отправлять новый CreateЗапрос сеанса.Все это происходит несколько раз в секунду, что делает невозможным выполнение сервером каких-либо других задач, а затем пытается создать этот сеанс.

Есть ли в Milo какие-либо настройки, определяющие задержку переподключения?Или есть какой-либо параметр для разделения того, что должно происходить при получении пустого ServerNonce?

Ответы сервера следующие:

  • Если сеанс можно активировать:

    OpcUa Binary Protocol
        Message Type: MSG
        Chunk Type: F
        Message Size: 96
        SecureChannelId: 1599759116
        Security Token Id: 1
        Security Sequence Number: 53
        Security RequestId: 3
        OpcUa Service : Encodeable Object
            TypeId : ExpandedNodeId
                NodeId EncodingMask: Four byte encoded Numeric (0x01)
                NodeId Namespace Index: 0
                NodeId Identifier Numeric: ActivateSessionResponse (470)
            ActivateSessionResponse
                ResponseHeader: ResponseHeader
                    Timestamp: Nov 16, 2018 14:05:47.974000000
                    RequestHandle: 1
                    ServiceResult: 0x00000000 [Good]
                    ServiceDiagnostics: DiagnosticInfo
                        EncodingMask: 0x00
                            .... ...0 = has symbolic id: False
                            .... ..0. = has namespace: False
                            .... .0.. = has localizedtext: False
                            .... 0... = has locale: False
                            ...0 .... = has additional info: False
                            ..0. .... = has inner statuscode: False
                            .0.. .... = has inner diagnostic info: False
                    StringTable: Array of String
                        ArraySize: 0
                    AdditionalHeader: ExtensionObject
                        TypeId: ExpandedNodeId
                        EncodingMask: 0x00
                ServerNonce: ab...
                Results: Array of StatusCode
                    ArraySize: 0
                DiagnosticInfos: Array of DiagnosticInfo
                    ArraySize: 0
    
  • Если сеанс не может быть активирован (после обновления программного обеспечения сервера):

    OpcUa Binary Protocol
        Message Type: MSG
        Chunk Type: F
        Message Size: 64
        SecureChannelId: 1599759041
        Security Token Id: 1
        Security Sequence Number: 61
        Security RequestId: 11
        OpcUa Service : Encodeable Object
            TypeId : ExpandedNodeId
            ActivateSessionResponse
                ResponseHeader: ResponseHeader
                    Timestamp: Nov 16, 2018 12:49:08.235000000 
                    RequestHandle: 222
                    ServiceResult: 0x80000000 [Bad]
                    ServiceDiagnostics: DiagnosticInfo
                        EncodingMask: 0x00
                            .... ...0 = has symbolic id: False
                            .... ..0. = has namespace: False
                            .... .0.. = has localizedtext: False
                            .... 0... = has locale: False
                            ...0 .... = has additional info: False
                            ..0. .... = has inner statuscode: False
                            .0.. .... = has inner diagnostic info: False
                    StringTable: Array of String
                        ArraySize: 0
                    AdditionalHeader: ExtensionObject
                        TypeId: ExpandedNodeId
                        EncodingMask: 0x00
                ServerNonce: <MISSING>[OpcUa Null ByteString]
                Results: Array of StatusCode
                    ArraySize: 0
                DiagnosticInfos: Array of DiagnosticInfo
                    ArraySize: 0
    

Заранее благодарим за вашепомощь.

1 Ответ

0 голосов
/ 16 ноября 2018

Этот описанный вами угловой случай, в котором нет задержки между неудачной повторной активацией и последующим повторным созданием, рассматривается в ветви dev/0.3 в этой фиксации .

Возможно, я смогу перенести его на 0.2.x на следующей неделе, если у меня будет свободное время.

Я не думаю, что есть какие-то обходные пути, которые вы можете использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...