TsgcWSPClient_MQTT | Sesje klienta MQTT

Clean Start

W zdarzeniu OnMQTTBeforeConnect znajduje się parametr aCleanSession. Jeśli wartość tego parametru wynosi True, oznacza to, że klient chce rozpocząć nową sesję, więc jeśli serwer przechowuje jakąkolwiek sesję, musi ją odrzucić. W takim przypadku parametr aSession w zdarzeniu OnMQTTConnect będzie miał wartość false. Jeśli wartość parametru wynosi False i istnieje sesja skojarzona z tym identyfikatorem klienta, serwer musi wznowić komunikację z klientem w stanie odpowiadającym istniejącej sesji.

 

Jeśli klient doświadczy nieoczekiwanego rozłączenia i wymagane jest wznowienie sesji w miejscu rozłączenia, należy w zdarzeniu OnMQTTBeforeConnect ustawić aCleanSession = True oraz aClientIdentifier = identyfikator klienta sesji.

 

Sesja

Po pomyślnym połączeniu sprawdź zdarzenie OnMQTTConnect i wartość parametru Session.

 

Session = true, oznacza wznowienie sesji.

Session = false oznacza, że jest to nowa sesja.


 
procedure TfrmWebSocketClient.MQTTMQTTBeforeConnect(Connection: TsgcWSConnection; 
  var aCleanSession: Boolean; var aClientIdentifier: string);
begin
  aCleanSession := false;
  aClientIdentifier := 'previous client id';
end;
 
procedure OnMQTTConnect(Connection: TsgcWSConnection; const Session: Boolean; 
  const ReasonCode: Integer; const ReasonName: string; const ConnectProperties: TsgcWSMQTTCONNACKProperties);
begin
  if Session then
    WriteLn('Session resumed')
  else
    WriteLn('New Session');
end;