TsgcWSPClient_MQTT | Client MQTT Sessions

Clean Start

OnMQTTBeforeConnect olayında, aCleanSession adlı bir parametre vardır. Bu parametrenin değeri True ise, istemcinin yeni bir oturum başlatmak istediği anlamına gelir, bu nedenle sunucunun saklanmış herhangi bir oturumu varsa, onu atması gerekir. Böylece, OnMQTTConnect olayı tetiklendiğinde, aSession parametresi false olacaktır. Bu parametrenin değeri False ise ve bu istemci tanımlayıcısıyla ilişkili bir oturum varsa, sunucu mevcut oturumla istemci durumunda iletişimi sürdürmelidir.

 

Yani, bir istemcinin beklenmedik bir bağlantı kesilmesi olursa ve bağlantının kesildiği yerde oturumu kurtarmak isterseniz, OnMQTTBeforeConnect'te aCleanSession = True ve aClientIdentifier = Oturumun Client ID'si ayarlayın.

 

Session

Başarılı bağlantıdan sonra, OnMQTTConnect olayını, Session parametresinin değerini kontrol edin.

 

Session = true, oturumun devam ettirildiği anlamına gelir.

Session = false, yeni bir oturum olduğu anlamına gelir.


 
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;