示例#1
0
        public override async Task Connect()
        {
            _log.LogInformation("-> ChatHost.Connect");

            IsBusy      = true;
            IsInError   = false;
            IsConnected = false;
            RaiseUpdateEvent();

            var ok = await InitializeSession(_sessionId);

            if (!ok)
            {
                // Error cases are handled in InitializeSession
                return;
            }

            ok = await InitializePeerInfo() &&
                 await CreateConnection();

            if (ok)
            {
                ChatProxy.UpdateChats(CurrentSession, PeerInfo.Message.PeerId);

                _connection.On <string>(Constants.ReceiveChatsMessage, ReceiveChats);
                _connection.On <string>(Constants.RequestChatsMessage, SendChats);
                _connection.On <string>(Constants.LikeChatMessage, LikeChat);

                ok = await StartConnection();
            }

            if (!ok)
            {
                _log.LogTrace("StartConnection NOT OK");
                IsConnected = false;
                IsInError   = true;
                IsBusy      = false;
                ErrorStatus = "Error";
                RaiseUpdateEvent();
                return;
            }

            ok = await SendChats();

            if (!ok)
            {
                _log.LogTrace("Error when sending chats");
                IsConnected = false;
                IsInError   = true;
                IsBusy      = false;
                ErrorStatus = "Error sending chats";
                RaiseUpdateEvent();
                return;
            }

            Status      = "Connected";
            IsBusy      = false;
            IsInError   = false;
            IsConnected = true;
            RaiseUpdateEvent();
            _log.LogInformation("ChatsHost.Connect ->");
        }