TsgcWSPClient_MQTT | Client MQTT Sessions

Clean Start

OnMQTTBeforeConnect, há um parâmetro chamado aCleanSession. Se o valor deste parâmetro for True, significa que o cliente quer iniciar uma nova sessão, portanto, se o servidor tiver alguma sessão armazenada, ele deve descartá-la. Assim, quando o evento OnMQTTConnect é disparado, o parâmetro aSession será false. Se o valor deste parâmetro for False e houver uma sessão associada a este client identifier, o servidor deve retomar as comunicações com o cliente no estado da sessão existente.

 

Portanto, se o cliente tiver uma desconexão inesperada, e você quiser recuperar a sessão de onde foi desconectado, em OnMQTTBeforeConnect defina aCleanSession = True e aClientIdentifier = Client ID da Sessão.

 

Session

Após uma conexão bem-sucedida, verifique o evento OnMQTTConnect, o valor do parâmetro Session.

 

Session = true, significa que a sessão foi retomada.

Session = false, significa que é uma nova sessão.


 
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;