/// <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); } }
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) { } } }); }