/// <summary> /// 获取指定的用户在线的服务器线路ID /// </summary> /// <param name="roleID"></param> /// <returns></returns> public static int GetUserOnlineState(string userID) { int state = 0; int oldServerLineID = -1; lock (_RegUserIDDict) { if (!_RegUserIDDict.TryGetValue(userID, out oldServerLineID)) { oldServerLineID = -1; } } if (oldServerLineID <= -1) { return(state); } //判断是否服务器已经当掉 if (LineManager.GetLineHeartState(oldServerLineID) > 0) { state = 1; } return(state); }
/// <summary> /// 添加用户ID到字典中 /// </summary> /// <param name="roleID"></param> public static bool RegisterUserID(string userID, int serverLineID, int state) { bool ret = true; lock (_RegUserIDDict) { int oldServerLineID = -1; if (state <= 0) //注销, 下边代码加入限制,防止错误的注销,导致的重复登录。 { //注册前先判断是否已经存在 if (_RegUserIDDict.TryGetValue(userID, out oldServerLineID)) { //判断是否服务器ID是否相同 if (oldServerLineID == serverLineID) { _RegUserIDDict.Remove(userID); } } } else //注册 { //注册前先判断是否已经存在 if (_RegUserIDDict.TryGetValue(userID, out oldServerLineID)) { //判断是否服务器已经当掉 if (LineManager.GetLineHeartState(oldServerLineID) > 0) { ret = false; //已经在线 } else { _RegUserIDDict[userID] = serverLineID; } } else { _RegUserIDDict[userID] = serverLineID; } } } return(ret); }