Ejemplo n.º 1
0
        public int HandleResponseMessage(UDPModel uModel)
        {
            KevSocketModel <UserInfoModel> userInfoModel = JsonHelper.ParseFromJson <KevSocketModel <UserInfoModel> >(uModel.Body, uModel.Length);

            if (userInfoModel == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }

            if (userInfoModel.ResponseCode != ResponseCode.Success)
            {
                KevRegister.Get <Dispatcher>(ClientItemsPrimaryKey.Dispatcher_MainThread).Invoke(() =>
                {
                    KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home).label_status.Text = ResponseCode.GetDescription(userInfoModel.ResponseCode);
                });
                return(ResponseCode.NetworkHostError);
            }

            if (userInfoModel.Data == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }


            KevRegister.Get <Dispatcher>(ClientItemsPrimaryKey.Dispatcher_MainThread).Invoke(() =>
            {
                HomeForm homeForm             = KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home);
                homeForm.label_nickName.Text  = userInfoModel.Data.NickName;
                homeForm.label_signature.Text = userInfoModel.Data.Signature;
            });

            return(ResponseCode.Success);
        }
Ejemplo n.º 2
0
        public int HandleRequestMessage(UDPModel uModel)
        {
            KevSocketModel ksModel = JsonHelper.ParseFromJson <KevSocketModel>(uModel);

            if (ksModel == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }

            UDPServer udpServer = KevRegister.Get <UDPServer>(UDPPrimaryKey.UDPServer);

            //根据当前的请求返回相应数据
            KevSocketModel <UserInfoModel> ksModel_result = new KevSocketModel <UserInfoModel>
            {
                Data         = UserCache.GetUserInfo(ksModel.DeviceId, () => { return(new UserInfoModel {
                        UserId = ksModel.DeviceId, NickName = "匿名:" + ksModel.DeviceId % 1000000, Signature = "你看不见我,看不见我"
                    }); }),
                ResponseCode = ResponseCode.Success,
                MessageId    = ksModel.MessageId,
                MessageType  = GetType(),
                NetworkType  = NetworkType.Request
            };

            ksModel_result.NetworkType = NetworkType.Response;
            ksModel_result.DeviceId    = ksModel.DeviceId;
            udpServer.SendMessage(ksModel_result, uModel.IPPoint);

            return(ResponseCode.NoResponse);
        }
        public int HandleResponseMessage(UDPModel uModel)
        {
            KevSocketModel <IEnumerable <UserInfoModel> > ksModel = JsonHelper.ParseFromJson <KevSocketModel <IEnumerable <UserInfoModel> > >(uModel);

            if (ksModel == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }

            if (ksModel.ResponseCode != ResponseCode.Success)
            {
                KevRegister.Get <Dispatcher>(ClientItemsPrimaryKey.Dispatcher_MainThread).Invoke(() =>
                {
                    KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home).label_status.Text = ResponseCode.GetDescription(ksModel.ResponseCode);
                });

                return(ResponseCode.Error);
            }

            if (ksModel.Data == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }
            KevRegister.Get <Dispatcher>(ClientItemsPrimaryKey.Dispatcher_MainThread).Invoke(() =>
            {
                KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home).AddUserRange(ksModel.Data);
                foreach (UserInfoModel item in ksModel.Data)
                {
                    UserCache.Updata(item);
                }
            });

            return(ResponseCode.Success);
        }
        public int HandleRequestMessage(UDPModel uModel)
        {
            KevSocketModel <ChatTextMessageModel> ksModel_ctmModel = JsonHelper.ParseFromJson <KevSocketModel <ChatTextMessageModel> >(uModel);

            if (ksModel_ctmModel == null || ksModel_ctmModel.Data == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }

            ChatTextMessageModel ctmModel = ksModel_ctmModel.Data;

            ctmModel.SendUserId    = ksModel_ctmModel.DeviceId;
            ctmModel.ReceiveUserId = ksModel_ctmModel.ReceiveDeviceId;

            IPEndPoint ip = UserCache.GetUserIP(ctmModel.ReceiveUserId);

            if (ip == null)
            {
                return(ResponseCode.NotFindUserIP);
            }

            //转发消息
            KevRegister.Get <UDPServer>(UDPPrimaryKey.UDPServer).SendMessage(ksModel_ctmModel, ip);

            return(ResponseCode.Success);
        }
Ejemplo n.º 5
0
        public int HandleRequestMessage(UDPModel uModel)
        {
            KevSocketModel ksModel = JsonHelper.ParseFromJson <KevSocketModel>(uModel);

            if (ksModel == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }

            IEnumerable <long> userIds = UserCache.GetAllUserId();

            if (userIds == null || userIds.Count() == 0)
            {
                return(ResponseCode.NotFind);
            }

            List <UserInfoModel> uiModels = new List <UserInfoModel>();

            foreach (long id in userIds)
            {
                UserInfoModel uiModel = UserCache.GetUserInfo(id, () =>
                {
                    return(new UserInfoModel
                    {
                        UserId = id,
                        NickName = "匿名:" + id % 10000,
                        Signature = "你看不见我,看不见我"
                    });
                });

                if (uiModel != null)
                {
                    uiModels.Add(uiModel);
                }
            }

            KevSocketModel <IEnumerable <UserInfoModel> > ksModel_userInfoModel = new KevSocketModel <IEnumerable <UserInfoModel> >
            {
                Data         = uiModels,
                DeviceId     = ksModel.DeviceId,
                MessageId    = ksModel.MessageId,
                MessageType  = GetType(),
                NetworkType  = NetworkType.Response,
                ResponseCode = ResponseCode.Success
            };

            KevRegister.Get <UDPServer>(UDPPrimaryKey.UDPServer).SendMessage(ksModel_userInfoModel, uModel.IPPoint);

            return(ResponseCode.NoResponse);
        }
Ejemplo n.º 6
0
        public int HandleRequestMessage(UDPModel uModel)
        {
            //哎呀有人上线了,怎么办呢。
            KevSocketModel <UserInfoModel> ksModel_userInfo = JsonHelper.ParseFromJson <KevSocketModel <UserInfoModel> >(uModel);

            if (ksModel_userInfo == null || ksModel_userInfo.Data == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }

            UserCache.Updata(ksModel_userInfo.Data);

            KevRegister.Get <Dispatcher>(ClientItemsPrimaryKey.Dispatcher_MainThread).Invoke(() =>
            {
                KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home).AddUser(ksModel_userInfo.Data);
            });

            return(ResponseCode.Success);
        }
Ejemplo n.º 7
0
        public int HandleResponseMessage(UDPModel uModel)
        {
            KevSocketModel ksModel = JsonHelper.ParseFromJson <KevSocketModel>(uModel);

            if (ksModel == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }

            if (ksModel.ResponseCode != ResponseCode.Success)
            {
                KevRegister.Get <Dispatcher>(ClientItemsPrimaryKey.Dispatcher_MainThread).Invoke(() =>
                {
                    KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home).label_status.Text = ResponseCode.GetDescription(ksModel.ResponseCode);
                });
            }

            return(ResponseCode.Success);
        }
Ejemplo n.º 8
0
        public int HandleRequestMessage(UDPModel uModel)
        {
            KevSocketModel <ChatTextMessageModel> ksModel_ctmModel = JsonHelper.ParseFromJson <KevSocketModel <ChatTextMessageModel> >(uModel);

            if (ksModel_ctmModel == null || ksModel_ctmModel.Data == null)
            {
                return(ResponseCode.AnalyticalDataError);
            }

            //界面上展示消息
            KevRegister.Get <Dispatcher>(ClientItemsPrimaryKey.Dispatcher_MainThread).Invoke(() =>
            {
                HomeForm hForm = KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home);
                ChatMessageCache.HandleMessage(ksModel_ctmModel.Data);
                hForm.HandleMessage(ksModel_ctmModel.Data);
            });

            return(ResponseCode.Success);
        }
Ejemplo n.º 9
0
 public void HandleTimeOutMessage(UDPModel uModel)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 10
0
 public int HandleResponseMessage(UDPModel uModel)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
        /// <summary>
        /// 处理消息
        /// </summary>
        /// <param name="uModel"></param>
        /// <returns></returns>
        public int HandleRequestMessage(UDPModel uModel)
        {
            KevSocketModel <LoginSocketModel> loginModel = JsonHelper.ParseFromJson <KevSocketModel <LoginSocketModel> >(uModel.Body, uModel.Length);

            if (loginModel == null)
            {
                return(ResponseCode.NotFindKevSocketModel);
            }

            if (loginModel.NetworkType == NetworkType.Response)
            {
                return(ResponseCode.NoResponse);
            }

            UDPServer udpServer = KevRegister.Get <UDPServer>(UDPPrimaryKey.UDPServer);

            if (udpServer == null)
            {
                return(ResponseCode.NotFindUDPServer);
            }

            //判断是否正常登陆

            long newLoginId = IdGenerator.NextId();

            KevSocketModel <UserInfoModel> ksModel_newUserLogin = new KevSocketModel <UserInfoModel>
            {
                Data = UserCache.GetUserInfo(newLoginId, () => new UserInfoModel {
                    UserId = newLoginId, NickName = "匿名:" + newLoginId % 1000000, Signature = "你看不见我,看不见我"
                }),
                DeviceId    = newLoginId,
                MessageId   = IdGenerator.NextId(),
                NetworkType = NetworkType.Request,
                MessageType = MessageType.NewUserLogin
            };

            //广播给之前的所有用户
            foreach (long uId in UserCache.GetAllUserId())
            {
                ksModel_newUserLogin.ReceiveDeviceId = uId;
                IPEndPoint ip = UserCache.GetUserIP(uId);
                if (ip != null)
                {
                    udpServer.SendMessage(ksModel_newUserLogin, ip);
                }
            }

            //重写自己的回执
            KevSocketModel <long> ksModel = new KevSocketModel <long>
            {
                ResponseCode    = ResponseCode.Success,
                MessageId       = loginModel.MessageId,
                MessageType     = MessageType.Login,
                NetworkType     = NetworkType.Response,
                ReceiveDeviceId = -1,
                Data            = newLoginId
            };

            udpServer.SendMessage(ksModel, uModel.IPPoint);

            UserCache.AddUser(newLoginId, uModel.IPPoint);

            Console.WriteLine("有人成功登陆");

            return(ResponseCode.NoResponse);
        }
Ejemplo n.º 12
0
 public void HandleTimeOutMessage(UDPModel uModel)
 {
 }
Ejemplo n.º 13
0
 public int HandleResponseMessage(UDPModel uModel)
 {
     return(ResponseCode.Error);
 }
Ejemplo n.º 14
0
 public int HandleRequestMessage(UDPModel uModel)
 {
     //我又不是服务器,你怎么能问我要资料呢
     return(ResponseCode.NotFind);
 }
 public void HandleTimeOutMessage(UDPModel uModel)
 {
     //记录发送超时的消息
 }
Ejemplo n.º 16
0
        public int HandleResponseMessage(UDPModel uModel)
        {
            //判断数据
            KevSocketModel <long> ksModel = JsonHelper.ParseFromJson <KevSocketModel <long> >(uModel.Body, uModel.Length);

            if (ksModel == null)
            {
                return(ResponseCode.NotFindKevSocketModel);
            }

            //处理相关的逻辑然后进行跳转
            Dispatcher dispatcher = KevRegister.Get <Dispatcher>(ClientItemsPrimaryKey.Dispatcher_MainThread);

            MainForm mainForm = KevRegister.Get <MainForm>(ClientItemsPrimaryKey.Form_Main);

            if (ksModel.ResponseCode == ResponseCode.Success)
            {
                dispatcher.Invoke(() =>
                {
                    if (mainForm != null)
                    {
                        mainForm.Hide();
                    }

                    //替换本机的Id
                    KevRegister.Add <long>(UDPPrimaryKey.Client_ThisDeviceId, ksModel.Data);

                    KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home, () =>
                    {
                        return(new HomeForm());
                    }).Show();
                });

                //请求本机资料
                KevSocketModel ksModel_requestSelfUserInfo = new KevSocketModel
                {
                    DeviceId    = KevRegister.Get <long>(UDPPrimaryKey.Client_ThisDeviceId, -1),
                    MessageId   = IdGenerator.NextId(),
                    MessageType = MessageType.GetUserInfo,
                    NetworkType = NetworkType.Request
                };

                UDPClient udpClient = KevRegister.Get <UDPClient>(ClientItemsPrimaryKey.Socket_UDPClient);
                if (!udpClient.SendMessage(ksModel_requestSelfUserInfo))
                {
                    KevRegister.Get <HomeForm>(ClientItemsPrimaryKey.Form_Home).label_status.Text = "请求自己的资料失败";
                }

                //获取已经登录的人
                KevSocketModel ksModel_getFriendList = new KevSocketModel
                {
                    DeviceId    = KevRegister.Get <long>(UDPPrimaryKey.Client_ThisDeviceId, -1),
                    MessageId   = IdGenerator.NextId(),
                    MessageType = MessageType.GetUserFriendList,
                    NetworkType = NetworkType.Request
                };
                udpClient.SendMessage(ksModel_getFriendList);
            }
            else
            {
                dispatcher.Invoke(() =>
                {
                    mainForm.ShowAPrompt(ResponseCode.GetDescription(ksModel.ResponseCode));
                });
            }

            return(ResponseCode.NoResponse);
        }
Ejemplo n.º 17
0
 public UDPViewModel()
 {
     this.protocols        = UDPModel.GetProtocols();
     this.selectedProtocol = nameof(UDPProtocol.None);
 }
 public int HandleResponseMessage(UDPModel uModel)
 {
     return(ResponseCode.Success);
 }
Ejemplo n.º 19
0
 public int HandleRequestMessage(UDPModel uModel)
 {
     Console.WriteLine("LoginSocketDelegate::HandleRequestMessage  我居然接到这个请求,别闹了。" + DateTime.Now.ToString());
     return(ResponseCode.NoResponse);
 }