Как отключиться от сервера MQTT при использовании SGC WebSockets? - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужно подключиться к серверу MQTT, получить некоторые сообщения, затем повторно подключиться (отключить и снова подключиться).

Я использую sgcWebSockets v4.2.1 и официальный код подключения:

// Create websocket client and set server options
oClient := TsgcWebSocketClient.Create(nil);
oClient.Host := 'wss://myserver';
oClient.Port := 443;

// Create MQTT protocol and assign to websocket client
oMQTT := TsgcWSPClient_MQTT.Create(nil);
oMQTT.Client := oClient;

// MQTT Authentication
oMQTT.Authentication.Enabled := True;
oMQTT.Authentication.Username := 'user';
oMQTT.Authentication.Password := 'pass';

// Handle MQTT methods
oMQTT.OnMQTTConnect := OnMQTTConnectHandler;
oMQTT.OnMQTTDisconnect := OnMQTTDisconnectHandler;

// connect to server
oClient.Active := True;

Теперь мне нужно отключиться.Как мне это сделать?

Я пробовал несколько способов, но все они, похоже, не сработали.Ни один из них не отображается как «Клиент отключен» в журналах сервера MQTT, даже:

// "RefusedUserPassword" on connecting again
// (since server never got the Disconnect message?)
//oClient.Active := False;

// Invalid control OptCode crash
//oMQTT.Disconnect;
//oClient.Active := False;

// RefusedUserPassword on connecting again
// (since server never got the Disconnect message?)
//oClient.Active := False;
//oMQTT.Disconnect;

// Odd error or no connection
//oMQTT.Disconnect;

Как правильно отключить (восстановить соединение) с сервера с помощью sgcWebSockets MQTT?Если это неприятно, как правильно отключить и утилизировать старое соединение, чтобы создать его заново?

1 Ответ

0 голосов
/ 01 марта 2019

Не реальный ответ, но все же обходной путь:

if fSGCClient <> nil then
  fSGCClient.Active := False;
FreeAndNil(fSGCClient);

Теперь fSGCClient может быть воссоздан и подключен заново.

...