Beispiel #1
0
        //接收信息
        private void ActiveMQ_Received(object sender, string e)
        {
            var package = JsonConvert.DeserializeObject <Package>(e);

            switch (package.Type)
            {
            case "Response":
            {
                switch (package.Method)
                {
                case nameof(RegisterUser):
                {
                    if (Sessions.ContainsKey(package.SessionID))
                    {
                        var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                                {
                                    Result = default(int)
                                });

                        RegisterUserResponse?.Invoke(this, data.Result);
                    }
                }
                break;

                case nameof(UserLogin):
                {
                    if (Sessions.ContainsKey(package.SessionID))
                    {
                        var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                                {
                                    Result = default(Tuple <int, List <User> >)
                                });

                        UserLoginResponse?.Invoke(this, data.Result);
                    }
                }
                break;

                case nameof(SearchFriends):
                {
                    if (Sessions.ContainsKey(package.SessionID))
                    {
                        var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                                {
                                    Result = default(Tuple <int, List <User> >)
                                });

                        FriendsSearchedResponse?.Invoke(this, data.Result.Item2);
                    }
                }
                break;

                case nameof(AddFriend):
                {
                    if (Sessions.ContainsKey(package.SessionID))
                    {
                        var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                                {
                                    Result = default(Tuple <int, User, User>)
                                });

                        AddFriendResponse?.Invoke(this, data.Result);
                    }
                }
                break;

                case nameof(GetMyFriends):
                {
                    if (Sessions.ContainsKey(package.SessionID))
                    {
                        var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                                {
                                    Result = default(Tuple <int, List <User> >)
                                });

                        GetMyFriendsResponse?.Invoke(this, data.Result);
                    }
                }
                break;

                case nameof(GetUserInfo):
                {
                    if (Sessions.ContainsKey(package.SessionID))
                    {
                        var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                                {
                                    Result = default(Tuple <int, User>)
                                });

                        GetUserInfoResponse?.Invoke(this, data.Result);
                    }
                }
                break;

                case nameof(UpdateUserInfo):
                {
                    if (Sessions.ContainsKey(package.SessionID))
                    {
                        var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                                {
                                    Result = default(Tuple <int>)
                                });

                        UpdateUserInfoResponse?.Invoke(this, data.Result);
                    }
                }
                break;

                default:
                    break;
                }
            }
            break;

            case "Notice":
            {
                switch (package.Method)
                {
                case "AddFriend":
                {
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                            {
                                Result = default(Tuple <int, User, User>)
                            });

                    FriendAddedNotice?.Invoke(this, data.Result);
                }
                break;

                //好友登录广播地址
                case "FriendLoginNotice":
                {
                    if (!Sessions.ContainsKey(package.SessionID))
                    {
                        var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                                {
                                    Username = default(string),
                                    Address  = default(string)
                                });;

                        FriendLoginNotice?.Invoke(this, new Tuple <string, string>(data.Username, data.Address));
                    }
                }
                break;

                case "Logout":
                {
                    if (!Sessions.ContainsKey(package.SessionID))
                    {
                        var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                                {
                                    Result   = default(int),
                                    UserName = default(string)
                                });

                        LogoutResponse?.Invoke(this, new Tuple <int, string>(data.Result, data.UserName));
                    }
                }
                break;
                }
            }
            break;

            case "Chat":
            {
                switch (package.Method)
                {
                case "Text":
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                        {
                            Username = default(string),
                            Message  = default(string)
                        });

                    ChatReceived?.Invoke(this, new Tuple <string, string>(data.Username, data.Message));
                    break;

                default:
                    break;
                }
            }
            break;

            default:
                break;
            }
        }