private void MainApplicationConnect(ApportionDispatcher apportionDispatcher) { var accessId = apportionDispatcher.GetAccessId(); var mainappChannelDispatcher = apportionDispatcher.CreateMainApplicationChannelDispatcher(_dispatchers); if (!_dispatchers.ContainsKey(accessId))//可能重连太快 { //主控端使用自身AccessId作索引 _dispatchers.Add(accessId, mainappChannelDispatcher); } else { var aboutOfCloseDispatcher = _dispatchers[accessId]; var data = MessageHelper.CopyMessageHeadTo(MessageHead.MID_LOGOUT, new LogOutPacket() { Message = "已有相同Id的主控端登陆,你已被登出!" }); aboutOfCloseDispatcher.SendTo(data); aboutOfCloseDispatcher.CloseSession(); } }
private void MainApplicationConnect(ApportionDispatcher apportionDispatcher) { var accessId = apportionDispatcher.GetAccessId(); var mainappChannelDispatcher = apportionDispatcher.CreateMainApplicationChannelDispatcher(_dispatchers); if (_dispatchers.ContainsKey(accessId))//可能重连太快 { var aboutOfCloseDispatcher = _dispatchers[accessId]; var data = MessageHelper.CopyMessageHeadTo(MessageHead.MID_LOGOUT, new LogOutPacket() { Message = "已有相同Id的主控端登陆,你已被登出" }); aboutOfCloseDispatcher.SendTo(data); aboutOfCloseDispatcher.CloseSession();//调用后底层会触发Closed事件 this.LogOutputEventHandler?.Invoke(LogOutLevelType.Debug, $"有相同Id:{accessId}的主控端登陆!"); } _dispatchers.Add(accessId, mainappChannelDispatcher); this.OnConnectedEventHandler?.Invoke(mainappChannelDispatcher); }