private void HandOut(AppMsg appMsg) { switch ((CMD)appMsg.cmd) { case CMD.HOTARTICLECOVERINFO: //Common.store.dispatcher.dispatch(new HotListAction(appMsg.rspHotList.article_cover_list)); break; case CMD.SEARCHRESULT: Debug.Log("收到"); Common.store.dispatcher.dispatch(new SearchReasultAction(appMsg.rspSearchList.article_cover_list, appMsg.rspSearchList.offcial_account_list)); return; ; case CMD.ARTICLECONTENT: break; case CMD.ARTICLECOVERANDOA: break; default: break; } }
public void AddMsg(AppMsg msg) { //注意多线程从操作 lock (lockstr) { msgQueue.Enqueue(msg); } }
public void Update() { if (NetSvc.instance.msgQueue.Count > 0) { //这里采用的是收集多线程的信息 //在单线程中处理,所以没有接受后马上发送 lock (NetSvc.lockstr) { AppMsg appMsg = NetSvc.instance.msgQueue.Dequeue(); HandOut(appMsg); } } }
private void ReceiveBodyCallback(IAsyncResult ar) { try { int count = clientSocket.EndReceive(ar); if (count > 0) { dmsg.bodyIndex += count; if (dmsg.bodyIndex < dmsg.bodyLen) { StartBody(); } else { //处理 dmsg.body string str = Encoding.UTF8.GetString(dmsg.body); Debug.Log("-->" + str); AppMsg msg = JsonConvert.DeserializeObject <AppMsg>(str); //TODO 接收完毕提醒 NetSvc.instance.AddMsg(msg); dmsg.ResetData(); StartHead(); } } else { //TODO 关闭Socket } } catch (Exception e) { //TODO 关闭Socket Debug.Log(e);//TODO 客户端提示 } }
public void Send(AppMsg msg) { sedthread = new Thread(client.SendMsg); sedthread.Start(msg); }