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.
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;