✨ feat(路由): 部分路由不缓存redis
This commit is contained in:
@@ -14,7 +14,7 @@ import { resResult, getRandSingleEelm, cal } from '../../../pubUtils/util';
|
||||
import { RoleStatus, ComBattleTeamModel, ComBattleTeamType, BossHp, ComRoleStatusHero } from '../../../db/ComBattleTeam';
|
||||
import { ItemModel, ItemType } from '../../../db/Item';
|
||||
import { addItems, handleCost } from '../../../services/role/rewardService';
|
||||
import { checkRoleInQueue, getServerName, rmCreatedTeamFromRedis, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
|
||||
import { checkRoleInQueue, getServerName, redisClient, rmCreatedTeamFromRedis, rmRoleFromQueue, setTeamSearchReq } from '../../../services/redisService';
|
||||
import { getRandBlueprtId, getFrd, updateRobotHurtByTime, comBtlLvInvalid, clearRobotHurtTimer, setDismissTimer, dismissTeam, handleComBtlProgress, getComBattleFriendAdd, teammateInBlackList, blueprtIdValid, hasEnoughBlueprt, addRoleToTeam, addRoleStToTeam, addValidSearchingRoles, validToJoin, addRobotsToTeam, addRobotsLater, teamIsFullToStart, oneTeamNotInBlack, getAllAssistCnt, checkHasMyTeam, checkTeamStatusAndSend, getComBtlLvByPlayerLv, addToSearchingTeams, getCapFrd, getCapExtraCnt, startTeam } from '../../../services/battle/comBattleService';
|
||||
import { setAp } from '../../../services/actionPointService';
|
||||
import { roleLevelup } from '../../../services/normalBattleService';
|
||||
@@ -31,6 +31,7 @@ import { getFriendRelationType, getRecommendType } from '../../../services/frien
|
||||
import { FriendRelationModel } from '../../../db/FriendRelation';
|
||||
import { isHeroHidden } from '../../../services/dataService';
|
||||
import { addComTeam, clearComBtlTimer,deleteComBattle,getComTeamByCode } from '../../../services/memoryCache/comBattleData';
|
||||
import { clearComBattleRoute } from '../../../pubUtils/dispatcher';
|
||||
|
||||
export default function(app: Application) {
|
||||
return new ComBattleHandler(app);
|
||||
@@ -164,6 +165,9 @@ export class ComBattleHandler {
|
||||
let sid = session.get('sid');
|
||||
|
||||
await rmRoleFromQueue(roleId, sid);
|
||||
let teamCode = session.get('teamCode');
|
||||
if(teamCode) clearComBattleRoute(redisClient(), teamCode);
|
||||
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
@@ -426,6 +430,7 @@ export class ComBattleHandler {
|
||||
teamStatus.timeout = true;
|
||||
sendMessageToTeam(teamCode, PUSH_ROUTE.TEAM_COMPLETE, {teamCode, result: false, timeout: true});
|
||||
deleteComBattle(teamCode);
|
||||
clearComBattleRoute(redisClient(), teamCode)
|
||||
}
|
||||
}, COM_BTL_CONST.BTL_TIME_LMT);
|
||||
teamStatus.roleStatus.forEach((st, idx) => {
|
||||
@@ -578,6 +583,7 @@ export class ComBattleHandler {
|
||||
sendMessageToTeam(teamCode, PUSH_ROUTE.TEAM_COMPLETE, { teamCode, result: false });
|
||||
|
||||
deleteComBattle(teamCode);
|
||||
clearComBattleRoute(redisClient(), teamCode);
|
||||
|
||||
return resResult(STATUS.SUCCESS, { teamInfo: pick(team, ['status', 'teamCode', 'roleStatus', 'bossHpArr']) });
|
||||
}
|
||||
@@ -592,6 +598,7 @@ export class ComBattleHandler {
|
||||
let dbTeam = await ComBattleTeamModel.getTeamByCode(teamCode);
|
||||
if (!dbTeam) return resResult(STATUS.COM_BATTLE_TEAM_INVALID);
|
||||
({ roleStatus, status, bossHpArr, timeout, endTime } = dbTeam);
|
||||
clearComBattleRoute(redisClient(), teamCode);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { teamInfo: {status, teamCode, roleStatus, bossHpArr, timeout, endTime} });
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ import { Channel, ChannelService, pinus } from 'pinus';
|
||||
import { TREASURE, EXTERIOR, FRIEND } from '../../pubUtils/dicParam';
|
||||
import { getFriendLvAdd } from '../friendService';
|
||||
import { getRoleIds } from '../../pubUtils/friendUtil';
|
||||
import { getComTeamSidByCode, getCreatedTeamByLv, getTeamSearchByLv, rmCreatedTeamFromRedis, rmRoleFromQueue, setCreatedTeamToRedis } from '../redisService';
|
||||
import { getComTeamSidByCode, getCreatedTeamByLv, getTeamSearchByLv, redisClient, rmCreatedTeamFromRedis, rmRoleFromQueue, setCreatedTeamToRedis } from '../redisService';
|
||||
import { getRewardByBlueprtId, gameData, getBossHpByBlueprtId, getDicBlueprtById } from '../../pubUtils/data';
|
||||
import { getZeroPointD, nowSeconds } from '../../pubUtils/timeUtil';
|
||||
import { addItems, getFriendPointObject, handleCost } from '../role/rewardService';
|
||||
@@ -22,6 +22,7 @@ import { RewardInter } from '../../pubUtils/interface';
|
||||
import { FriendPointModel } from '../../db/FriendPoint';
|
||||
import { isComBattleTimeLimit } from '../../pubUtils/battleUtils';
|
||||
import { clearComBtlTimer, deleteComBattle, getComTeamByCode, getComTeamTimerByCode, getRobotHurtTimer, setComTeamTimer, setRobotHurtTimerIfNotExist } from '../memoryCache/comBattleData';
|
||||
import { clearComBattleRoute } from '../../pubUtils/dispatcher';
|
||||
|
||||
/**
|
||||
* 在给定的品质列表中随机返回一定数量的藏宝图Id
|
||||
@@ -284,6 +285,7 @@ export async function handleComBtlProgress(teamStatus: MemComBtlTeam) {
|
||||
sendMessageToTeam(teamCode, PUSH_ROUTE.TEAM_COMPLETE, { teamCode, result });
|
||||
|
||||
deleteComBattle(teamCode);
|
||||
clearComBattleRoute(redisClient(), teamCode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -394,6 +396,7 @@ export async function dismissTeam(teamStatus: MemComBtlTeam, roleId: string) {
|
||||
|
||||
let rmSt = deleteComBattle(teamCode);
|
||||
if (!rmSt) return resResult(STATUS.COM_BATTLE_DISSMISS_ERR);
|
||||
clearComBattleRoute(redisClient(), teamCode);
|
||||
|
||||
rmCreatedTeamFromRedis(teamCode, teamStatus.lv);
|
||||
sendMessageToTeam(teamCode, PUSH_ROUTE.TEAM_DISMISS, { teamCode });
|
||||
|
||||
@@ -17,7 +17,7 @@ interface ServerInfo {
|
||||
export async function dispatch(redis: any, uid: string, connectors: ServerInfo[], serverType: string = '') {
|
||||
connectors.sort((a, b) => a.id > b.id? 1: -1);
|
||||
|
||||
if (serverType) {
|
||||
if (serverType && needRoleRoute(serverType)) {
|
||||
let appid: string = await redis.hgetAsync('roleRoute', `${uid}_${serverType}`);
|
||||
if(!appid) {
|
||||
let index = Math.abs(crc.crc32(uid)) % connectors.length;
|
||||
@@ -30,4 +30,30 @@ export async function dispatch(redis: any, uid: string, connectors: ServerInfo[]
|
||||
}
|
||||
let index = Math.abs(crc.crc32(uid)) % connectors.length;
|
||||
return connectors[index];
|
||||
}
|
||||
|
||||
function needRoleRoute(serverType: string) {
|
||||
switch (serverType) {
|
||||
case 'connector':
|
||||
case 'role':
|
||||
case 'battle':
|
||||
case 'activity':
|
||||
case 'order':
|
||||
case 'gm':
|
||||
case 'chat':
|
||||
return false;
|
||||
case 'comBattle':
|
||||
case 'guild':
|
||||
return true;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
export async function clearComBattleRoute(redis: any, teamCode: string) {
|
||||
try {
|
||||
await redis.hdelAsync('roleRoute', `${teamCode}_comBattle`);
|
||||
} catch(e) {
|
||||
console.log(e)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user