TsgcWSPClient_MQTT | Client MQTT Sessions

Clean Start

OnMQTTBeforeConnect-Ereignis, es gibt einen Parameter namens aCleanSession. Wenn der Wert dieses Parameters True ist, bedeutet das, dass der Client eine neue Sitzung starten möchte, sodass der Server eine gespeicherte Sitzung verwerfen muss. Wenn also das Ereignis OnMQTTConnect ausgelöst wird, ist der Parameter aSession false. Wenn der Wert dieses Parameters False ist und eine Sitzung mit diesem Client-Identifier verknüpft ist, muss der Server die Kommunikation mit dem Client im Zustand mit der bestehenden Sitzung fortsetzen.

 

Wenn ein Client also eine unerwartete Trennung hat und Sie die Sitzung wiederherstellen möchten, in der er getrennt wurde, setzen Sie in OnMQTTBeforeConnect aCleanSession = True und aClientIdentifier = Client ID der Sitzung.

 

Session

Prüfen Sie nach erfolgreicher Verbindung das Ereignis OnMQTTConnect, den Wert des Session-Parameters.

 

Session = true, bedeutet, dass die Sitzung wieder aufgenommen wurde.

Session = false, bedeutet, es ist eine neue Sitzung.


 
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;