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; } }