예제 #1
0
파일: Client.cs 프로젝트: 4058665/MQTT
        public Task Connect(IPEndPoint endpoint)
        {
            _connAcked = false;
            _broker.Connect(endpoint);

            var connect = new ConnectSendFlow(_manager);
            return connect.Start(new Connect(ClientId, 300),
                                 startCmd =>
                                     {
                                         ResetTimer();
                                         _connAcked = true;
                                     });
        }
예제 #2
0
파일: MqttClient.cs 프로젝트: 4058665/MQTT
        public Task Connect(IPEndPoint endpoint, 
            ushort keepAliveSeconds = DefaultKeepAliveSeconds, 
            bool cleanSession = false,
            string userName = null,
            string password = null)
        {
            _reconnectEndpoint = endpoint;
            _reconnectKeepAlive = keepAliveSeconds;

            _client.Connect(endpoint).Await();
            _client.Receive();
            KeepAliveSeconds = keepAliveSeconds;
            _clientState = ClientState.Connecting;

            var connectFlow = new ConnectSendFlow(_manager);

            var connectCommand = new Connect(ClientId, keepAliveSeconds);
            connectCommand.Details.ConnectFlags.CleanSession = cleanSession;
            if (string.IsNullOrEmpty(userName) == false)
            {
                connectCommand.Details.ConnectFlags.UserName = true;
                connectCommand.UserName = userName;
            }
            if (string.IsNullOrEmpty(password) == false)
            {
                connectCommand.Details.ConnectFlags.Password = true;
                connectCommand.Password = password;
            }

            return connectFlow.Start(connectCommand, startCmd =>
                                     {
                                         _clientState = ClientState.Connected;
                                         ResetTimer();
                                     });
        }