我需要连接到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与服务器断开连接(重新重新连接)的正确方法是什么?如果那很麻烦,我该如何正确断开连接并处理旧的连接以重新创建一个旧连接?
答案 0 :(得分:0)
这不是真正的答案,但仍然可以解决:
if fSGCClient <> nil then
fSGCClient.Active := False;
FreeAndNil(fSGCClient);
现在可以重新创建fSGCClient并重新连接。