推送:对单人推送函数抽象

This commit is contained in:
luying
2022-04-09 10:28:21 +08:00
parent f486a8d8a5
commit 26a649b213
32 changed files with 146 additions and 703 deletions
+11 -25
View File
@@ -8,7 +8,7 @@ import { getCurTask, getPvpTask } from './task/taskService';
import { RoleType } from '../db/Role';
import { Application, FrontendOrBackendSession, pinus, RpcClient } from 'pinus';
import { resResult } from '../pubUtils/util';
import { STATUS, PUSH_BATCH, PUSH_INTERVAL, CONSUME_TYPE, HERO_SELECT, ENTERY_ROLE_PICK, JEWEL_SELECT, ITEM_SELECT, SKIN_SELECT } from '../consts';
import { STATUS, PUSH_BATCH, PUSH_INTERVAL, CONSUME_TYPE, HERO_SELECT, ENTERY_ROLE_PICK, JEWEL_SELECT, ITEM_SELECT, SKIN_SELECT, PUSH_ROUTE } from '../consts';
import { getAllShopList } from './shopService';
import { getGeneralRank, getRankFirstReward } from './rankService';
import { getFriendList, getApplyList } from './friendService';
@@ -32,7 +32,7 @@ import { getBattleListOfMain, getMainChapter } from './normalBattleService';
import { GuildType } from '../db/Guild';
import UserGuild, { UserGuildType } from '../db/UserGuild';
import { setPreDayActiveData, getAllGuildActivityStatus } from './guildActivity/guildActivityService';
import { getAllOnlineRoles } from './redisService';
import { getAllOnlineRoles, getAllServers } from './redisService';
import Item, { ItemModel } from '../db/Item';
import { PvpDefenseModel } from '../db/PvpDefense';
import { getDonation } from './donateService';
@@ -43,6 +43,7 @@ import { SkinModel } from '../db/Skin';
import { getAp } from './actionPointService';
import { HeroParam } from '../domain/roleField/hero';
import { pick } from 'underscore';
import { sendMessageToServerWithSuc, sendMessageToUser, sendMessageToUserWithSuc } from './pushService';
/**
* init: 初始的时候是否推送 true-推 false-不推
@@ -207,20 +208,17 @@ async function getModuleData(type: string, data: { role: RoleType, session: Fron
}
function pushEntryData<T>(type: string, roleId: string, sid: string, param: T) {
let uids = [{ uid: roleId, sid }];
let data = { type };
data[type] = param;
pinus.app.channelService.pushMessageByUids('onEntryData', resResult(STATUS.SUCCESS, data), uids);//通知在线玩家练兵场重置,
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.ENTRY_DATA, data, sid);
}
function pushEntryStart(roleId: string, sid: string) {
let uids = [{ uid: roleId, sid }];
pinus.app.channelService.pushMessageByUids('onEntryDataStart', resResult(STATUS.SUCCESS), uids);//通知在线玩家练兵场重置,
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.ENTRY_DATA_START, {}, sid);
}
function pushEntryEnd(roleId: string, sid: string) {
let uids = [{ uid: roleId, sid }];
pinus.app.channelService.pushMessageByUids('onEntryDataEnd', resResult(STATUS.SUCCESS), uids);//通知在线玩家练兵场重置,
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.ENTRY_DATA_END, {}, sid);
}
@@ -287,23 +285,11 @@ export async function everydayRefresh() {
}
async function pushRefreshTime() {
let allOnlineUsers = await getAllOnlineRoles();
let servers = await getAllServers();
let todayZeroPoint = getZeroPoint();
let n = Math.ceil(allOnlineUsers.length / PUSH_BATCH); // 一共多少批
// console.log(n)
let i = -1;
let interval = setInterval(() => {
if (++i < n) {
let users = allOnlineUsers.slice(i * PUSH_BATCH, (i + 1) * PUSH_BATCH - 1);
for (let { roleId, sid } of users) {
pinus.app.channelService.pushMessageByUids('onRefreshTime', resResult(STATUS.SUCCESS, {
todayZeroPoint
}), [{ uid: roleId, sid: sid }]);
}
} else {
clearInterval(interval);
}
}, PUSH_INTERVAL);
for(let serverId of servers) {
await sendMessageToServerWithSuc(serverId, PUSH_ROUTE.REFRESH_TIME, { todayZeroPoint }, true);
}
}
export async function kickUser(app: Application, uid: string, message = STATUS.LOGIN_ERR) {
@@ -314,7 +300,7 @@ export async function kickUser(app: Application, uid: string, message = STATUS.L
let roleId = session.get('roleId');
let sid = session.get('sid');
let uids = [{ uid: roleId, sid }];
app.get('channelService').pushMessageByUids('onRemoteLogin', resResult(message), uids);
sendMessageToUser(roleId, PUSH_ROUTE.REMOTE_LOGIN, sid);
});
}
await sessionService.akick(uid);