Пример #1
0
        private void ActiveMQ_Received(object sender, string e)
        {
            var package = JsonConvert.DeserializeObject <Package>(e);

            switch (package.Type)
            {
            case "Request":
            {
                switch (package.Method)
                {
                case "RegisterUser":
                {
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                            {
                                Address = default(string),
                                user    = default(User),
                                //Username = default(string),
                                //Password = default(string),
                                //Info = default(string)
                            });

                    // TODO:数据库处理。
                    var Result = RegisterUserRequest?.Invoke(new Tuple <User>(data.user));
                    if (data.Address == null)
                    {
                        break;
                    }
                    // TODO:响应客户端。
                    activeMQ.Send(data.Address, new Package(package.SessionID, "Response", package.Method, JsonConvert.SerializeObject(new
                            {
                                Result
                            })).ToString());
                }
                break;

                case "UserLogin":
                {
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                            {
                                Address  = default(string),
                                Username = default(string),
                                Password = default(string),
                            });

                    if (data.Address == null)
                    {
                        break;
                    }

                    // TODO:数据库处理。
                    var Result = UserLoginRequest?.Invoke(new Tuple <string, string, string>(data.Username, data.Password, data.Address));

                    // TODO:响应客户端。
                    activeMQ.Send(data.Address, new Package(package.SessionID, "Response", package.Method, JsonConvert.SerializeObject(new
                            {
                                Result
                            })).ToString());
                    // 广播地址
                    TopicactiveMQ.TopicSend("Topic", new Package(package.SessionID, "Notice", "FriendLoginNotice", JsonConvert.SerializeObject(new
                            {
                                Username = data.Username,
                                Address  = data.Address
                            })).ToString());
                }

                break;

                case "SearchFriends":
                {
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                            {
                                Address    = default(string),
                                MyUserName = default(string),
                                Condition  = default(string)
                            });

                    if (data.Address == null)
                    {
                        break;
                    }

                    // TODO:数据库处理。
                    var Result = SearchFriendsRequest?.Invoke(new Tuple <string, string, string>(data.Address, data.MyUserName, data.Condition));

                    // TODO:响应客户端。
                    activeMQ.Send(data.Address, new Package(package.SessionID, "Response", package.Method, JsonConvert.SerializeObject(new
                            {
                                Result
                            })).ToString());
                }
                break;

                case "AddFriend":
                {
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                            {
                                Address  = default(string),
                                MyUserID = default(string),
                                FriendID = default(string)
                            });

                    if (data.Address == null)
                    {
                        break;
                    }

                    // TODO:数据库处理。
                    var Result = AddFriendRequest?.Invoke(new Tuple <string, string>(data.MyUserID, data.FriendID));

                    // 响应客户端,在主界面绑定好友信息。
                    activeMQ.Send(data.Address, new Package(package.SessionID, "Response", package.Method, JsonConvert.SerializeObject(new
                            {
                                Result
                            })).ToString());

                    // 通知被加好友方
                    activeMQ.Send(Result.Item3.Address, new Package(package.SessionID, "Notice", package.Method, JsonConvert.SerializeObject(new
                            {
                                Result
                            })).ToString());
                }
                break;

                case "GetMyFriends":
                {
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                            {
                                Address  = default(string),
                                UserName = default(string)
                            });

                    if (data.Address == null)
                    {
                        break;
                    }

                    // TODO:数据库处理。
                    var Result = GetMyFriendsRequest?.Invoke(new Tuple <string>(data.UserName));

                    // TODO:响应客户端。
                    activeMQ.Send(data.Address, new Package(package.SessionID, "Response", package.Method, JsonConvert.SerializeObject(new
                            {
                                Result
                            })).ToString());
                }
                break;

                case "GetUserInfo":
                {
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                            {
                                Address  = default(string),
                                UserName = default(string)
                            });

                    if (data.Address == null)
                    {
                        break;
                    }

                    // TODO:数据库处理。
                    var Result = GetUserInfoRequest?.Invoke(new Tuple <string>(data.UserName));

                    // TODO:响应客户端。
                    activeMQ.Send(data.Address, new Package(package.SessionID, "Response", package.Method, JsonConvert.SerializeObject(new
                            {
                                Result
                            })).ToString());
                }
                break;

                case "UpdateUserInfo":
                {
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                            {
                                Address = default(string),
                                User    = default(User)
                            });

                    if (data.Address == null)
                    {
                        break;
                    }

                    // TODO:数据库处理。
                    var Result = UpdateUserInfoRequest?.Invoke(new Tuple <User>(data.User));

                    // TODO:响应客户端。
                    activeMQ.Send(data.Address, new Package(package.SessionID, "Response", package.Method, JsonConvert.SerializeObject(new
                            {
                                Result
                            })).ToString());
                }
                break;

                case "Logout":
                {
                    var data = JsonConvert.DeserializeAnonymousType(package.Data, new
                            {
                                Address  = default(string),
                                UserName = default(string)
                            });

                    if (data.Address == null)
                    {
                        break;
                    }

                    // 数据库处理。
                    var Result = LogoutRequest?.Invoke(data.UserName);

                    // 广播好友退出信息
                    TopicactiveMQ.TopicSend("Topic", new Package(package.SessionID, "Notice", "Logout", JsonConvert.SerializeObject(new
                            {
                                Result,
                                data.UserName
                            })).ToString());
                }
                break;

                default:
                    break;
                }
            }
            break;

            default:
                break;
            }
        }