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.
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;