Esempio n. 1
0
        /// <summary>
        /// 开启服务
        /// </summary>
        /// <param name="successCallback"></param>
        public void Star(Action <bool, string> successCallback)
        {
            try
            {
                SignalR = WebApp.Start(_servicesUrl);
                successCallback(true, "服务器启动成功");
                //开始监听消息队列

                Task.Factory.StartNew(() =>
                {
                    while (true)
                    {
                        Thread.Sleep(1000);
                        try
                        {
                            var message = SignalrTool.Redis.DepositHelper.ListLeftPop <Message>(RedisKeyManager.MessageQueue);
                            if (message == null)
                            {
                                continue;
                            }
                            HubContext           = (GlobalHost.ConnectionManager.GetHubContext <MyHub>() as IHubContext);
                            var messageForwarder = MessageForwarderFactory.CreateMessageForwarder(message.MessageType);
                            messageForwarder.MessageProcess(message, HubContext);
                        }
                        catch (Exception e)
                        {
                        }
                    }
                });
            }
            catch (TargetInvocationException e)
            {
                successCallback(false, e.Message);
            }
        }
Esempio n. 2
0
        public void Start()
        {
            //生成代理
            WebApp.Start(_servicesUrl);

            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    Thread.Sleep(1000);
                    try
                    {
                        ArrayList userIDs = new ArrayList();
                        foreach (KeyValuePair <string, User> p in SignalRHub.Usermananger.users)
                        {
                            userIDs.Add(p.Key);
                        }
                        if (userIDs.Count > 0)
                        {
                            MessageService.MessageServiceSoapClient client = new MessageService.MessageServiceSoapClient();

                            object result = client.GetMessage(string.Join(",", (string[])userIDs.ToArray(typeof(string))), null, 1);
                            DataTable dt  = ((DataSet)result).Tables[0];//new DBMessage().GetMessage((string[])userIDs.ToArray(typeof(string)));
                            if (dt.Rows.Count > 0)
                            {
                                ArrayList messageIDs = new ArrayList();
                                HubContext           = (GlobalHost.ConnectionManager.GetHubContext <SignalRHub>() as IHubContext);
                                List <Message> ls    = StaticMethod <Message> .FillModel(dt);
                                foreach (Message message in ls)
                                {
                                    var messageForwarder = MessageForwarderFactory.CreateMessageForwarder(message.MessageType);
                                    messageForwarder.MessageProcess(message, HubContext);
                                    messageIDs.Add(message.MessageID.ToString());
                                }
                                client.UpdateMessageStatus(2, string.Join(",", (string[])messageIDs.ToArray(typeof(string))));
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
            });
        }