Exemplo n.º 1
0
        /// <summary>
        /// 消息推送
        /// </summary>
        /// <param name="socketDataModel"></param>
        /// <param name="SessionPool"></param>
        /// <param name="IP"></param>
        public static void Push(Socket sockeClient, string msg, Dictionary <string, Session> sessionPool, string sendIP)
        {
            string receiveIP     = string.Empty;
            string sendMobile    = string.Empty;
            string receiveMobile = string.Empty;
            string errMsg        = string.Empty;
            //解析消息对象
            SocketDataModel <MemberSendObject, MemberReceiveObject> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <MemberSendObject, MemberReceiveObject> >(msg);
            MemberSendObject    sendObj    = socketDataModel.SendObject;
            MemberReceiveObject receiveObj = socketDataModel.ReceiveObject;

            if (!MobileTokenBusiness.ExistToken(sendObj.Token, out sendMobile))
            {
                //如果发送方token不正确
                var msgObj = new { result_code = 0, errMsg = "手机token无效" };
                //TcpHelper.SaveDBLog(socketDataModel.MessageType, "", sendObj.Token, receiveObj.StoreId, receiveObj.Mobile, socketDataModel.Data.ToString(), "0");
                SendData(msgObj, sessionPool, sendIP);
            }

            //接受信息方是否存在
            if (!GetIP(sessionPool, receiveObj.Mobile, out receiveIP))
            {
                //如果发送方token不正确
                var msgObj = new { result_code = 0, errMsg = "对方不在线" };
                //tb.show(socketDataModel.MessageType, sendObj.StoreId, sendObj.Token, receiveObj.StoreId, receiveObj.Mobile, socketDataModel.Data.ToString(), "0");
                SendData(msgObj, sessionPool, sendIP);
            }
            else
            {
                TcpHelper tb = new TcpHelper();

                //发送消息给接受方
                var msgObj1 = new { result_code = 1, content = socketDataModel.Data };
                SendData(msgObj1, sessionPool, receiveIP);

                //提示发送方消息发送成功
                var msgObj2 = new { result_code = 1 };
                SendData(msgObj2, sessionPool, sendIP);

                //记录TCP日志
                //DataMessageModel logModel = new DataMessageModel();
                //logModel.ManageType = socketDataModel.MessageType;
                //TcpHelper.SaveDBLog(socketDataModel.MessageType, "", sendMobile, "", receiveObj.Mobile, socketDataModel.Data.ToString(), "1");
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 用户注册
        /// </summary>
        /// <param name="commonObject"></param>
        /// <param name="SessionPool"></param>
        /// <param name="IP"></param>
        public static void Register(Socket socketClient, string msg, Dictionary <string, Session> sessionPool, string IP)
        {
            string mobile = string.Empty;
            string errMsg = string.Empty;
            //解析消息对象
            SocketDataModel <MemberSendObject, MemberReceiveObject> socketDataModel = Utils.DataContractJsonDeserializer <SocketDataModel <MemberSendObject, MemberReceiveObject> >(msg);
            MemberSendObject sendObj = socketDataModel.SendObject;

            //验证解析token
            if (MobileTokenBusiness.ExistToken(sendObj.Token, out mobile))
            {
                //设置客户端对象
                List <string> repeatIPList = new List <string>();
                var           pair         = sessionPool.Where(p => p.Value.SendClientId.Equals(mobile));
                foreach (var p in pair)
                {
                    if (!p.Value.IP.Equals(IP))
                    {
                        repeatIPList.Add(p.Value.IP);
                    }
                }

                foreach (var v in repeatIPList)
                {
                    sessionPool.Remove(v);
                }

                sessionPool[IP].SendClientId = mobile;
                sessionPool[IP].SockeClient  = socketClient;
                //应答数据
                var msgObj = new { result_code = 1, answerMsgType = "0", answerMsg = "注册成功" };

                SendData(msgObj, sessionPool, IP);
            }
            else
            {
                //应答数据
                var msgObj = new { result_code = 0, result_msg = "手机token无效" };
                SendData(msgObj, sessionPool, IP);
            }
        }