/// <summary> /// 接收注册中心的消息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void m_CometClient_OnReceiveNotify(object sender, CometEventArgs e) { try { if (e.Type == CometEventType.ReceiveMessage) // 接收到来自服务器的配置信息 { CometMessage rm = XmlUtil.LoadObjFromXML <CometMessage>(e.Response); if (rm.Action == CometMessageAction.Publish) { List <ServiceMonitor> lstServiceMonitor = XmlUtil.LoadObjFromXML <List <ServiceMonitor> >(rm.MessageBody); if (OnMonitorStatPublish != null) { OnMonitorStatPublish(this, new MonitorStatEventArgs(lstServiceMonitor)); } } } else if (e.Type == CometEventType.Connected) { XTrace.WriteLine("成功连接到监控中心。"); } else if (e.Type == CometEventType.Lost) // 当和监控中心断开连接时 { Console.WriteLine("和监控中心断开连接, 5秒钟后将重新连接。"); ReConnect(); } } catch (Exception ex) { Console.WriteLine("接收监控中心消息时发生错误:" + ex.ToString()); } }
/// <summary> /// 接收注册中心的消息 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void m_CometClient_OnReceiveNotify(object sender, CometEventArgs e) { try { if (e.Type == CometEventType.ReceiveMessage) // 接收到来自服务器的配置信息 { RegistryMessage rm = XmlUtil.LoadObjFromXML<RegistryMessage>(e.Response); if(rm.Action == RegistryMessageAction.ServiceConfig){ m_ESBProxy.ESBConfig = XmlUtil.LoadObjFromXML<ESBConfig>(rm.MessageBody); ThreadPoolX.QueueUserWorkItem(x => { m_ConfigurationManager.SaveESBConfig(m_ESBProxy.ESBConfig); }); } } else if (e.Type == CometEventType.Connected) // 当和服务器取得联系时发送消费者配置文件到服务端 { m_CometClient.SendData(RegistryMessageAction.Hello, m_ESBProxy.ConsumerConfig.ToXml()); } } catch (Exception ex) { XTrace.WriteLine("接收注册中心消息时发生错误:" + ex.ToString()); } }
private void OnAddClient(CometAsyncRequestState state, CometEventArgs e) { if (!IsClientUsed(state.ClientId)) { int lastIdx = Math.Max(_games.Count - 1, 0); Game game = _games.Count > lastIdx ? _games[lastIdx] : null; if (null == game || (!string.IsNullOrEmpty(game.ClientId1) && !string.IsNullOrEmpty(game.ClientId2))) { game = new Game(); _games.Add(game); } if (string.IsNullOrEmpty(game.ClientId1)) { game.ClientId1 = state.ClientId; } else if (string.IsNullOrEmpty(game.ClientId2)) { game.ClientId2 = state.ClientId; startGameResponse response = new startGameResponse(); response.GameId = game.GameId; response.FirstClientId = (new Random().Next(100)) > 50 ? game.ClientId1 : game.ClientId2; CometClientProcessor.Inst.SendToClient(game.ClientId1, response); CometClientProcessor.Inst.SendToClient(game.ClientId2, response); } } }
private void OnRemoveClient(CometAsyncRequestState state, CometEventArgs e) { }