TsgcWSPClient_MQTT | Client MQTT Sessions

Inicio limpio

OnMQTTBeforeConnect evento, hay un parámetro llamado aCleanSession. Si el valor de este parámetro es True, significa que el cliente desea iniciar una nueva sesión, por lo que si el servidor tiene alguna sesión almacenada, debe descartarla. Así, cuando se activa el evento OnMQTTConnect, el parámetro aSession será false. Si el valor de este parámetro es False y existe una sesión asociada a este identificador de cliente, el servidor debe reanudar las comunicaciones con el cliente en el estado de la sesión existente.

 

Por lo tanto, si el cliente sufre una desconexión inesperada y desea recuperar la sesión en el punto donde se desconectó, en OnMQTTBeforeConnect establezca aCleanSession = True y aClientIdentifier = ID de cliente de la sesión.

 

Sesión

Una vez establecida la conexión correctamente, compruebe el evento OnMQTTConnect y el valor del parámetro Session.

 

Session = true, indica que la sesión ha sido retomada.

Session = false, significa que es una nueva sesión.


 
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;