public string SendPrivateMessagePackage(PrivateMessage privateMessage) { if (clientModel.HasFunction(FunctionType.ChatSystem)) { while (sending) { Thread.Sleep(100); } sending = true; isReceive = false; PrivateMessagePackage sendPackage = new PrivateMessagePackage(privateMessage, null); string send = JsonSerializer.Serialize(sendPackage); Send(send); while (!isReceive) { Thread.Sleep(100); } sending = false; return(receiveMessage); } else { return("Chat System offline."); } }
private void Login() { try { Send(clientModel.GetAccount().Id); ChatGroupPackage chatGroupPackage = JsonSerializer.Deserialize <ChatGroupPackage>(GetReceive()); PrivateMessagePackage privateMessagePackage = JsonSerializer.Deserialize <PrivateMessagePackage>(GetReceive()); GroupMessagePackage groupMessagePackage = JsonSerializer.Deserialize <GroupMessagePackage>(GetReceive()); clientModel.UpdateChatGroupList(chatGroupPackage.SendList); clientModel.UpdatePrivateMessageList(privateMessagePackage.SendList); clientModel.UpdateGroupMessageList(groupMessagePackage.SendList); login = true; clientModel.SystemOnLine(FunctionType.ChatSystem); new Thread(Start).Start(); } catch (Exception e) { //Console.WriteLine(e); Disconnect(); throw; } }
private async Task AfterConnect() { userId = GetReceive(); SendChatGroupPackage(new ChatGroupPackage(await chatModel.GetChatGroupByUserId(userId), "init")); SendPrivateMessagePackage(new PrivateMessagePackage(await chatModel.GetPrivateMessageById(userId), "init")); SendGroupMessagePackage(new GroupMessagePackage(await chatModel.GetGroupMessageByUserId(userId), "init")); connect = true; while (connect) { string receive = GetReceive(); if (receive != null) { var receivePackage = JsonSerializer.Deserialize <InformationPackage>(receive); string result = null; switch (receivePackage.informationType) { case InformationType.PRIVATE_MESSAGE: PrivateMessagePackage privateMessagePackage = JsonSerializer.Deserialize <PrivateMessagePackage>(receive); foreach (var message in privateMessagePackage.SendList.MessageList) { result = chatModel.AddNewPrivateMessage(message); if (!string.IsNullOrEmpty(result)) { break; } } break; case InformationType.GROUP_MESSAGE: GroupMessagePackage groupMessagePackage = JsonSerializer.Deserialize <GroupMessagePackage>(receive); foreach (var message in groupMessagePackage.SendList.MessageList) { result = chatModel.AddNewGroupMessage(message); if (!string.IsNullOrEmpty(result)) { break; } } break; case InformationType.CHAT_GROUP: ChatGroupPackage chatGroupPackage = JsonSerializer.Deserialize <ChatGroupPackage>(receive); switch (chatGroupPackage.Keyword) { case "Add": result = await chatModel.AddNewGroup(chatGroupPackage.SendList.GetGroupByIndex(0), userId); break; case "Update": result = await chatModel.UpdateGroup(chatGroupPackage.SendList.GetGroupByIndex(0), userId); break; case "AddUser": result = await chatModel.AddNewGroupMember(chatGroupPackage.SendList.GetGroupByIndex(0).GroupId, chatGroupPackage.TargetId, userId); break; case "RemoveUser": result = await chatModel.RemoveGroupMember(chatGroupPackage.SendList.GetGroupByIndex(0).GroupId, chatGroupPackage.TargetId, userId); break; case "Remove": result = await chatModel.RemoveGroup(chatGroupPackage.SendList.GetGroupByIndex(0), userId); break; } break; default: result = "Wrong package."; break; } SendErrorPackage(result); } } }
private void SendPrivateMessagePackage(PrivateMessagePackage sendPackage) { string send = JsonSerializer.Serialize(sendPackage); Send(send); }