コード例 #1
0
ファイル: ClientService.cs プロジェクト: drtk712/Chegevala
        private bool MessageChannelCallBack(RemoteMessage remoteMessage, BasicDeliverEventArgs args)
        {
            switch (remoteMessage.MessageType)
            {
            case MessageType.LoginCallBack:
                if (remoteMessage.JsonContent == "true")
                {
                    Console.WriteLine("登录成功");
                    IsLogin  = true;
                    Logining = false;
                }
                else
                {
                    Console.WriteLine("登录失败");
                    Logining = false;
                    rabbitMqProvider.DeleteQueue(MyServiceMessageChannelName, TopicHelper.UserTopic(MyServiceName, ClientUserName));
                }
                break;

            case MessageType.SystemMessage:
                break;

            case MessageType.GroupMessage:
                break;

            case MessageType.UserMessage:
                Console.WriteLine(remoteMessage.JsonContent);
                break;
            }

            return(true);
        }
コード例 #2
0
ファイル: ClientService.cs プロジェクト: drtk712/Chegevala
        public void Login(string username, string password)
        {
            if (!IsLogin)
            {
                if (!Logining)
                {
                    Logining       = true;
                    ClientUserName = username;
                    //消息发送处理频道
                    RunExchangeConsumeChannel(MyServiceMessageChannelName, TopicHelper.UserTopic(MyServiceName, ClientUserName), ExchangeType.topic,
                                              MyServiceMessageExchangeName, TopicHelper.UserTopic(MyServiceName, ClientUserName), MessageChannelCallBack);

                    rabbitMqProvider.Send(MyServiceLoginChannelName, new RemoteMessage()
                    {
                        JsonContent      = username + " " + password,
                        Sender           = ClientUserName,
                        EnablePersistent = true,
                        MessageType      = MessageType.Unknown,
                    }, queueName: MyServiceLoginQueueName);
                }
                else
                {
                    Console.WriteLine("正在登录中");
                }
            }
            else
            {
                Console.WriteLine("已经登录");
            }
        }
コード例 #3
0
ファイル: MyService.cs プロジェクト: drtk712/Chegevala
 public MyService(TimeSpan requestHeartBeat, TimeSpan networkRecoveryInterval)
 {
     rabbitMqProvider = new RabbitMqProvider();
     if (rabbitMqProvider.ConstructMqConsumerConn(requestHeartBeat, networkRecoveryInterval))
     {
         //登录请求处理频道
         RunSimpleConsumeChannel(MyServiceLoginChannelName, MyServiceLoginQueueName, LoginChannelCallBack);
         //消息接收处理频道
         RunSimpleConsumeChannel(MyServiceReceiveChannelName, MyServiceReceiveQueueName, ReceiveChannelCallBack);
         //消息发送处理频道
         RunExchangeChannel(MyServiceMessageChannelName, MyServiceMessageQueueName, ExchangeType.topic,
                            MyServiceMessageExchangeName, TopicHelper.UserTopic(MyServiceName, MyServiceName), MessageChannelCallBack);
     }
 }
コード例 #4
0
ファイル: MyService.cs プロジェクト: drtk712/Chegevala
        private bool ReceiveChannelCallBack(RemoteMessage remoteMessage, BasicDeliverEventArgs args)
        {
            switch (remoteMessage.MessageType)
            {
            case MessageType.UserMessage:
                rabbitMqProvider.Send(MyServiceMessageChannelName, new RemoteMessage()
                {
                    JsonContent      = remoteMessage.JsonContent,
                    Sender           = remoteMessage.Sender,
                    TopicRoute       = TopicHelper.UserTopic(MyServiceName, remoteMessage.TopicRoute),
                    MessageType      = remoteMessage.MessageType,
                    EnablePersistent = true
                });
                break;

            case MessageType.GroupMessage:
                break;
            }

            return(true);
        }
コード例 #5
0
ファイル: MyService.cs プロジェクト: drtk712/Chegevala
        private bool LoginChannelCallBack(RemoteMessage remoteMessage, BasicDeliverEventArgs args)
        {
            var    param         = remoteMessage.JsonContent.Split(" ");
            bool   ret           = false;
            string returnMessage = "true";

            if (param.Length != 2)
            {
                LogHelper.LogError($"用户{remoteMessage.Sender}请求登录参数异常");
            }
            else
            {
                var username = param[0];
                var password = param[1];
                LogHelper.Log($"{username} 请求登录。UID:{remoteMessage.Sender};请求时间:{remoteMessage.Timestamp};");
                try
                {
                    //using (var db = new ChegevalaContext())
                    //{
                    //var user = db.Set<User>().Where(n => n.UserName == username).FirstOrDefault();
                    //if (user == null)
                    //{
                    //    //用户未注册,为其注册账号
                    //    db.Add(new User()
                    //    {
                    //        UserName = username,
                    //        PassWord = password
                    //    });
                    //    db.SaveChanges();
                    //    ret = true;
                    //    returnMessage = "登录成功,已经成功创建账号";
                    //}
                    //else
                    //{
                    //    //用户已注册,判断密码是否正确
                    //    if (user.PassWord == password)
                    //    {
                    //        ret = true;
                    //        returnMessage = "登录成功";
                    //    }
                    //    else
                    //    {
                    //        ret = false;
                    //        returnMessage = "登录失败,密码错误";
                    //    }
                    //}
                    rabbitMqProvider.Send(MyServiceMessageChannelName, new RemoteMessage()
                    {
                        JsonContent      = returnMessage,
                        TopicRoute       = TopicHelper.UserTopic(MyServiceName, remoteMessage.Sender),
                        Sender           = MyServiceName,
                        MessageType      = MessageType.LoginCallBack,
                        Timestamp        = DateTime.Now,
                        EnablePersistent = false
                    });
                    if (ret)
                    {
                        LogHelper.Log($"用户{username}登录成功");
                    }
                    else
                    {
                        LogHelper.Log($"用户{username}登录失败");
                    }
                    //}
                }
                catch (Exception e)
                {
                    LogHelper.LogError(e.Message);
                }
            }

            return(true);
        }