推送:对单人推送函数抽象
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user