private bool CheckSpecialPackge(RequestPackage package, GameSession session) { //处理特殊包 if (package.ActionId == ((int)ActionEnum.Interrupt)) { //Proxy server notifly interrupt connect ops OnDisconnected(session); if (session != null && (session.ProxySid == Guid.Empty || GameSession.Count > 1)) { //保留代理服连接 session.Close(); session.ProxySid = Guid.Empty; } return(true); } if (package.ActionId == ((int)ActionEnum.Heartbeat)) { if (session != null) { // 客户端tcp心跳包 session.Refresh(); OnHeartbeat(session); session.ExitSession(); } return(true); } return(false); }
/// <summary> /// close session /// </summary> public void CloseSession() { if (_session != null) { _session.Close(); } }
private void OnDisconnected(ISocket sender, ConnectionEventArgs e) { try { GameSession session = GameSession.Get(e.Socket.HashCode); if (session != null) { OnDisconnected(session); session.ProxySid = Guid.Empty; session.Close(); } } catch (Exception err) { TraceLog.WriteError("Disconnected error:{0}", err); } }
private bool CheckSpecialPackge(RequestPackage package, GameSession session) { //处理特殊包 if (package.ActionId == ((int)ActionEnum.Interrupt)) { //Proxy server notifly interrupt connect ops OnDisconnected(session); if (session != null && (session.ProxySid == Guid.Empty || GameSession.Count > 1)) { //保留代理服连接 session.Close(); session.ProxySid = Guid.Empty; } return true; } if (package.ActionId == ((int)ActionEnum.Heartbeat)) { // 客户端tcp心跳包 session.Refresh(); OnHeartbeat(session); session.ExitSession(); Interlocked.Decrement(ref runningNum); return true; } return false; }
/// <summary> /// /// </summary> /// <param name="package"></param> /// <param name="session"></param> /// <returns></returns> protected virtual bool CheckSpecialPackge(RequestPackage package, GameSession session) { //处理特殊包 if (package.ActionId == ((int)ActionEnum.Interrupt)) { //Proxy server notifly interrupt connect ops OnDisconnected(session); if (session != null && (session.ProxySid == Guid.Empty || GameSession.Count > 1)) { //保留代理服连接 session.Close(); session.ProxySid = Guid.Empty; } return true; } if (package.ActionId == ((int)ActionEnum.Heartbeat)) { if (session != null) { // 客户端tcp心跳包 session.Refresh(); OnHeartbeat(session); BuildHearbeatPackage(package, session); session.ExitSession(); } return true; } return false; }