TsgcWSPClient_MQTT | クライアントMQTTセッション

クリーンスタート

OnMQTTBeforeConnect イベントには aCleanSession というパラメーターがあります。このパラメーターの値が True の場合、クライアントが新しいセッションを開始したいことを意味します。そのため、サーバーにセッションが保存されている場合は破棄する必要があります。したがって、OnMQTTConnect イベントが発火すると、aSession パラメーターは false になります。このパラメーターの値が False で、このクライアント識別子に関連付けられたセッションがある場合、サーバーは既存のセッションの状態でクライアントとの通信を再開する必要があります。

 

クライアントに予期しない切断が発生し、切断された場所でセッションを回復したい場合は、OnMQTTBeforeConnect で aCleanSession = True および aClientIdentifier = セッションのクライアント ID を設定します。

 

セッション

接続が成功したら、OnMQTTConnect イベントで Session パラメータの値を確認します。

 

Session = true は、セッションが再開されたことを意味します。

Session = false は新しいセッションであることを意味します。


 
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;