Skip to content

client.OnConnectionLost有时候不会重连? #3

Open
@WelcomeAngel

Description

@WelcomeAngel

while (mqClient.IsConnected == false)
{
await mqClient.ReConnectAsync();
Log4NetUtil.Info("ReConnectAsync", new Dictionary<string, object>
{
{ "ConnectResult",connectResult},
{ "mqClientIsConnected", mqClient.IsConnected }
});
}
在里面加了日志没有打印出来
怀疑mqClient.IsConnected还是true,
但定时30秒client.SendMessageAsync返回是Disconnected了
后面改成do while,只打印出了OnConnectionLost,mqClientIsConnected:False ,里面ReConnectAsync还是没有打印出来,ReConnectAsync会卡死了?

            client.OnConnectionLost += async (sender) =>
            {
                var mqClient = sender as MqttClient;

                Log4NetUtil.Info("OnConnectionLost", new Dictionary<string, object> { { "mqClientIsConnected", mqClient.IsConnected }});

                ConnectError connectResult = ConnectError.NotAuthorized;

                do
                {
                    try
                    {
                        connectResult = await mqClient.ReConnectAsync();

                        Log4NetUtil.Info("ReConnectAsync", new Dictionary<string, object>
                        {
                            { "ConnectResult",connectResult},
                            { "mqClientIsConnected", mqClient.IsConnected }
                        });

                        await mqClient.SubscribeAsync(subTopic, MqttQoS.AtMostOnce);

                        Log4NetUtil.Info("SubscribeAsync", new Dictionary<string, object> { });
                    }
                    catch (Exception ex)
                    {
                        Log4NetUtil.Error("ReConnectAsync", new Dictionary<string, object> { { "ex", ex.ToString() } });
                    }
                    await Task.Delay(5000);
                } while (!mqClient.IsConnected && connectResult != ConnectError.ConnectionAccepted);
            };

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions