//HandleResult OnPointerDataReceive(IntPtr connId, IntPtr pData, int length) //{ // // 数据到达了 // try // { // if (m_tcpServer.Send(connId, pData, length)) // { // return HandleResult.Ok; // } // return HandleResult.Error; // } // catch (Exception) // { // return HandleResult.Ignore; // } //} HandleResult OnReceive(IntPtr connId, byte[] bytes) { try { string text = Encoding.UTF8.GetString(bytes, 0, bytes.Length); LogUtil.getInstance().addDebugLog("收到客户端原始消息:" + text); { text = m_endStr + text; text = text.Replace("\r\n", ""); List <string> list = new List <string>(); bool b = CommonUtil.splitStrIsPerfect(text, list, m_packFlag); if (b) { for (int i = 0; i < list.Count; i++) { ReceiveObj obj = new ReceiveObj(connId, list[i]); Task t = new Task(() => { doAskCilentReq(obj); }); t.Start(); //Thread thread = new Thread(doAskCilentReq); //thread.Start(obj); } //text = ""; m_endStr = ""; } else { for (int i = 0; i < list.Count - 1; i++) { ReceiveObj obj = new ReceiveObj(connId, list[i]); Task t = new Task(() => { doAskCilentReq(obj); }); t.Start(); //Thread thread = new Thread(doAskCilentReq); //thread.Start(obj); } m_endStr = list[list.Count - 1]; } } } catch (Exception ex) { LogUtil.getInstance().addErrorLog("OnReceive:" + ex.Message); } return(HandleResult.Ok); }
// 处理客户端的请求 void doAskCilentReq(object obj) { ReceiveObj receiveObj = (ReceiveObj)obj; string text = receiveObj.m_data; // 日志 { PlayerData playerData = GameUtil.getPlayerDataByConnId(receiveObj.m_connId); if (playerData != null) { RoomData room = GameUtil.getRoomByUid(playerData.m_uid); if (room != null) { LogUtil.getInstance().writeRoomLog(room, "收到客户端消息:" + text); } else { LogUtil.getInstance().addDebugLog("收到客户端消息:" + text); } } else { LogUtil.getInstance().addDebugLog("收到客户端消息:" + text); } } JObject jo; try { jo = JObject.Parse(text); } catch (JsonReaderException ex) { // 传过来的数据不是json格式的,一律不理 // 日志 { PlayerData playerData = GameUtil.getPlayerDataByConnId(receiveObj.m_connId); if (playerData != null) { RoomData room = GameUtil.getRoomByUid(playerData.m_uid); if (room != null) { LogUtil.getInstance().writeRoomLog(room, "客户端传来非json数据:" + text); } else { LogUtil.getInstance().addDebugLog("客户端传来非json数据:" + text); } } else { LogUtil.getInstance().addDebugLog("客户端传来非json数据:" + text); } } m_endStr = ""; return; } if (jo.GetValue("tag") != null) { string tag = jo.GetValue("tag").ToString(); // 休闲场相关 if (tag.CompareTo(TLJCommon.Consts.Tag_XiuXianChang) == 0) { PlayLogic_Relax.getInstance().OnReceive(receiveObj.m_connId, text); } // 比赛场相关 else if (tag.CompareTo(TLJCommon.Consts.Tag_JingJiChang) == 0) { PlayLogic_PVP.getInstance().OnReceive(receiveObj.m_connId, text); } // 获取pvp场次信息 else if (tag.CompareTo(TLJCommon.Consts.Tag_GetPVPGameRoom) == 0) { NetRespond_GetPVPGameRoom.doAskCilentReq_GetPVPGameRoom(receiveObj.m_connId, text); } // 请求服务器在线玩家信息接口 else if (tag.CompareTo(TLJCommon.Consts.Tag_OnlineInfo) == 0) { NetRespond_OnlineInfo.doAskCilentReq_OnlineInfo(receiveObj.m_connId, text); } // 使用buff else if (tag.CompareTo(TLJCommon.Consts.Tag_UseBuff) == 0) { NetRespond_UseBuff.doAskCilentReq_UseBuff(receiveObj.m_connId, text); } // 是否已经加入游戏 else if (tag.CompareTo(TLJCommon.Consts.Tag_IsJoinGame) == 0) { NetRespond_IsJoinGame.doAskCilentReq_IsJoinGame(receiveObj.m_connId, text); } // 请求恢复房间 else if (tag.CompareTo(TLJCommon.Consts.Tag_RetryJoinGame) == 0) { NetRespond_RetryJoinGame.doAskCilentReq_RetryJoinGame(receiveObj.m_connId, text); } // 自定义牌型 else if (tag.CompareTo(TLJCommon.Consts.Tag_DebugSetPoker) == 0) { NetRespond_DebugSetPoker.doAskCilentReq_DebugSetPoker(receiveObj.m_connId, text); } // 心跳 else if (tag.CompareTo(TLJCommon.Consts.Tag_HeartBeat_Play) == 0) { NetRespond_HeartBeat_Play.doAskCilentReq_HeartBeat_Play(receiveObj.m_connId, text); } // 解散房间 else if (tag.CompareTo(TLJCommon.Consts.Tag_BreakRoom) == 0) { NetRespond_BreakRoom.doAskCilentReq_BreakRoom(receiveObj.m_connId, text); } // 斗地主相关 else if (tag.CompareTo(TLJCommon.Consts.Tag_DouDiZhu_Game) == 0) { PlayLogic_DDZ.getInstance().OnReceive(receiveObj.m_connId, text); } // 未知Tag else { LogUtil.getInstance().addDebugLog("未知Tag:" + tag); } } else { // 传过来的数据没有tag字段的,一律不理 // 日志 { PlayerData playerData = GameUtil.getPlayerDataByConnId(receiveObj.m_connId); if (playerData != null) { RoomData room = GameUtil.getRoomByUid(playerData.m_uid); if (room != null) { LogUtil.getInstance().writeRoomLog(room, "客户端传来的数据没有Tag:" + text); } else { LogUtil.getInstance().addDebugLog("客户端传来的数据没有Tag:" + text); } } else { LogUtil.getInstance().addDebugLog("客户端传来的数据没有Tag:" + text); } } return; } }
//HandleResult OnPointerDataReceive(IntPtr connId, IntPtr pData, int length) //{ // // 数据到达了 // try // { // if (m_tcpServer.Send(connId, pData, length)) // { // return HandleResult.Ok; // } // return HandleResult.Error; // } // catch (Exception) // { // return HandleResult.Ignore; // } //} HandleResult OnReceive(IntPtr connId, byte[] bytes) { try { string text = Encoding.UTF8.GetString(bytes, 0, bytes.Length); // 日志 { PlayerData playerData = GameUtil.getPlayerDataByConnId(connId); if (playerData != null) { RoomData room = GameUtil.getRoomByUid(playerData.m_uid); if (room != null) { LogUtil.getInstance().writeRoomLog(room, "收到客户端原始消息:" + text); } else { LogUtil.getInstance().addDebugLog("收到客户端原始消息:" + text); } } else { LogUtil.getInstance().addDebugLog("收到客户端原始消息:" + text); } } { text = m_endStr + text; text = text.Replace("\r\n", ""); List <string> list = new List <string>(); bool b = CommonUtil.splitStrIsPerfect(text, list, m_packEndFlag); if (b) { for (int i = 0; i < list.Count; i++) { ReceiveObj obj = new ReceiveObj(connId, list[i]); //Thread thread = new Thread(doAskCilentReq); //thread.Start(obj); Task t = new Task(() => { doAskCilentReq(obj); }); t.Start(); } //text = ""; m_endStr = ""; } else { for (int i = 0; i < list.Count - 1; i++) { ReceiveObj obj = new ReceiveObj(connId, list[i]); //Thread thread = new Thread(doAskCilentReq); //thread.Start(obj); Task t = new Task(() => { doAskCilentReq(obj); }); t.Start(); } m_endStr = list[list.Count - 1]; } } } catch (Exception ex) { TLJ_PlayService.PlayService.log.Error("OnReceive:" + ex.Message); } return(HandleResult.Ok); }
static void OnError(object s, ReceiveObj e) { Console.WriteLine("Error: " + e.message); }
static void OnReceive(object s, ReceiveObj e) { Console.WriteLine("Бот:"); Console.WriteLine(e.message); }
static void OnReceive(object s, ReceiveObj e) { User u; try { //этот пользователь уже есть в списке? u = Users.Where(c => c.socket == e.socket).First(); //если уже есть: string message = e.message; message = message.ToUpper(); //строка с ответом string answer = ""; //валидность команды bool valid = false; if (message.Contains("СПИСОК КЛИЕНТОВ")) { valid = true; foreach (User c in Users) { answer += c.name + " online=" + ServerObj.IsConnected(c.socket) + Environment.NewLine; } } if (message.Contains("КАК ДЕЛА")) { valid = true; answer += "Хорошо." + Environment.NewLine; } if (message.Contains("КОТОРЫЙ ЧАС")) { valid = true; answer += "Сейчас: " + DateTime.Now.ToShortTimeString() + Environment.NewLine; } if (message == "ПОКА") { valid = true; answer += "Досвидания." + Environment.NewLine; } //если команда не опознана, напомнить список доступных if (!valid) { answer = commandString; } ServerObj.Send(e.socket, answer); } catch { //первый ответ пользователя = его имя u = new User(); u.socket = e.socket; u.name = e.message; Users.Add(u); ServerObj.Send(e.socket, $"Здравствуйте {u.name}" + Environment.NewLine + commandString); } Console.WriteLine(e.socket.RemoteEndPoint.ToString() + " Mssage: " + e.message); }
static void OnError(object s, ReceiveObj e) { Console.WriteLine(e.socket.RemoteEndPoint.ToString() + " Error: " + e.message); }
// 处理客户端的请求 void doAskCilentReq(object obj) { // 模拟耗时操作,比如数据库操作,IO操作 // Thread.Sleep(3000); ReceiveObj receiveObj = (ReceiveObj)obj; string text = receiveObj.m_data; LogUtil.getInstance().addDebugLog("收到客户端消息:" + text); JObject jo; try { jo = JObject.Parse(text); } catch (JsonReaderException ex) { // 传过来的数据不是json格式的,一律不理 LogUtil.getInstance().addDebugLog("客户端传来非json数据:" + text); m_endStr = ""; return; } if (jo.GetValue("tag") != null) { string tag = jo.GetValue("tag").ToString(); // 请求登录接口 if (tag.CompareTo(TLJCommon.Consts.Tag_Login) == 0) { NetRespond_Login.doAskCilentReq_Login(receiveObj.m_connId, text); } // 请求第三方登录 else if (tag.CompareTo(TLJCommon.Consts.Tag_Third_Login) == 0) { NetRespond_ThirdLogin.doAskCilentReq_ThirdLogin(receiveObj.m_connId, text); } // 请求快速注册接口 else if (tag.CompareTo(TLJCommon.Consts.Tag_QuickRegister) == 0) { NetRespond_QuickRegister.doAskCilentReq_QuickRegister(receiveObj.m_connId, text); } // 请求服务器在线玩家信息接口 else if (tag.CompareTo(TLJCommon.Consts.Tag_OnlineInfo) == 0) { NetRespond_OnlineInfo.doAskCilentReq_OnlineInfo(receiveObj.m_connId, text); } // 检查版本 else if (tag.CompareTo(TLJCommon.Consts.Tag_CheckVerisionCode) == 0) { NetRespond_CheckVerisionCode.doAskCilentReq_CheckVerisionCode(receiveObj.m_connId, text); } // 检查版本 else if (tag.CompareTo(TLJCommon.Consts.Tag_LoginDataStatistics) == 0) { NetRespond_LoginDataStatistics.doAskCilentReq_LoginDataStatistics(receiveObj.m_connId, text); } else { LogUtil.getInstance().addDebugLog("未知Tag:" + tag); } } else { // 传过来的数据没有tag字段的,一律不理 LogUtil.getInstance().addDebugLog("客户端传来的数据没有Tag:" + text); return; } }