TsgcWSPClient_MQTT | Sessions client MQTT

Clean Start

Dans l'événement OnMQTTBeforeConnect, il y a un paramètre appelé aCleanSession. Si la valeur de ce paramètre est True, cela signifie que le client souhaite démarrer une nouvelle session, donc si le serveur a une session stockée, il doit la supprimer. Ainsi, lorsque l'événement OnMQTTConnect est déclenché, le paramètre aSession sera false. Si la valeur de ce paramètre est False et qu'il existe une session associée à cet identifiant client, le serveur doit reprendre les communications avec le client dans l'état de la session existante.

 

Ainsi, si le client a une déconnexion inattendue, et que vous voulez reprendre la session là où elle a été déconnectée, dans OnMQTTBeforeConnect définissez aCleanSession = True et aClientIdentifier = ID client de la session.

 

Session

Une fois la connexion réussie, vérifiez l'événement OnMQTTConnect, la valeur du paramètre Session.

 

Session = true, signifie que la session a été reprise.

Session = false, signifie qu'il s'agit d'une nouvelle session.


 
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;