/// <summary> /// 投注端退出了,注销资源,通知他的控盘端下线 /// </summary> public static void RemoveBetServer(Session session) { if (AvailableBetServers.ContainsKey(session.ClientId)) { int value; AvailableBetServers.TryRemove(session.ClientId, out value); } // 通知该服务端影响到的一批客户端下线 var allClients = SessionPool.GetClientsGroup(ClientTypeEnum.Client); if (allClients.Count == 0) { return; } var clientIds = allClients.Keys.ToArray(); foreach (var clientId in clientIds) { if (allClients[clientId].BetServerId == session.ClientId) { MQRouterSendQueue.PushBetServerClose(clientId); } } }
/// <summary> /// 转发退码命令到出货客户端 /// </summary> /// <param name="sessionId">下注端ID</param> /// <param name="betContent">下注结果信息</param> /// <returns></returns> public static MQActionVoidResult DeleteBet(string sessionId, BetContentResult betContent) { var session = SessionPool.GetClientsGroup(ClientTypeEnum.Bet); if (session != null) { foreach (var item in session) { if (item.Value.platform.Value == betContent.BetPlatformEnum) { MQRouterSendQueue.PushDeleteBet(item.Key, betContent); } } return(new MQActionVoidResult() { IsOK = true }); } else { return(new MQActionVoidResult() { IsOK = false, ErrorMsg = "未找到下注客户端" }); } }
public void ThreadMQRouterSend() { try { using (RouterSocket routerSocket = new RouterSocket()) { routerSocket.Bind(MQConfig.RouterSendServer); while (!_cancellationTokenSource.IsCancellationRequested) { try { IdKeyData item; if (MQRouterSendQueue.TryTake(out item)) { routerSocket.RouterSend(item); } } catch (TerminatingException) { } catch (Exception ex) { MQThreadExceptionHandler?.Invoke(ex); } } } } catch (Exception ex) { MQThreadExceptionHandler?.Invoke(ex); } }
/// <summary> /// 转发扫水结果到客户端 /// </summary> /// <param name="sessionId">发送端</param> /// <param name="content">扫水结果</param> /// <returns></returns> public static MQActionVoidResult CollectCompletedToClient(string sessionId, CollectResult content) { var session = SessionPool.GetClientsGroup(ClientTypeEnum.Client); if (session != null) { foreach (var item in session) { if (item.Key == content.ClientSessionID) { MQRouterSendQueue.PushCollectCompleted(item.Key, content); break; } } return(new MQActionVoidResult() { IsOK = true }); } else { return(new MQActionVoidResult() { IsOK = false, ErrorMsg = "未找到出货客户端" }); } }
private void btnPushMessage_Click(object sender, EventArgs e) { var session = SessionPool.GetClientsGroup(ClientTypeEnum.Bet); if (session != null) { var ses = session.First(); MQRouterSendQueue.PushBetServerClose(ses.Key); } }
/// <summary> /// 转发下注命令到出货客户端 /// </summary> /// <param name="sessionId">下注端ID</param> /// <param name="betContent">下注结果信息</param> /// <returns></returns> public static MQActionVoidResult BetCompleted(string sessionId, BetContentResult betContent) { var session = SessionPool.GetClientsGroup(ClientTypeEnum.Strategy); if (session != null) { foreach (var item in session) { MQRouterSendQueue.PushAddBetCompleted(item.Key, betContent); } return(new MQActionVoidResult() { IsOK = true }); } else { return(new MQActionVoidResult() { IsOK = false, ErrorMsg = "未找到下注客户端" }); } }
/// <summary> /// 转发扫水命令到扫水客户端 /// </summary> /// <param name="sessionId">命令发送端</param> /// <param name="betContent">扫水内容</param> /// <returns></returns> public static MQActionVoidResult SendCollect(string sessionId, Collect content) { var session = SessionPool.GetClientsGroup(ClientTypeEnum.Crawl); if (session != null) { foreach (var item in session) { MQRouterSendQueue.SendCollect(item.Key, content); } return(new MQActionVoidResult() { IsOK = true }); } else { return(new MQActionVoidResult() { IsOK = false, ErrorMsg = "未找到扫水客户端" }); } }