修改 connectorRemote 中部分逻辑
This commit is contained in:
@@ -21,10 +21,8 @@ Filter.prototype.before = async function (routeRecord: RouteRecord, msg: any, se
|
||||
|
||||
session.push('teamCode', () => {});
|
||||
|
||||
let connectorServers = pinus.app.getServersByType('connector');
|
||||
let { id } = connectorServers[0];
|
||||
let maintenServers = await pinus.app.rpc.connector.connectorRemote.getServerMainten.toServer(id);
|
||||
if(maintenServers.indexOf(serverId) != -1) { // 该服务器维护
|
||||
const maintenServers = this.app.get('maintenServers');
|
||||
if(maintenServers && maintenServers.indexOf(serverId) != -1) { // 该服务器维护
|
||||
let isWhiteList = await checkWhiteListWithUid(uid);
|
||||
if(isWhiteList) return next(null);
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ import { addRoleToGuildChannel, addRoleToSysChannel, addRoleToWorldChannel, leav
|
||||
import { reportOneOnline, savePlayTime } from '../../../services/authenticateService';
|
||||
import { Rank } from '../../../services/rankService';
|
||||
import { checkTaskWithRole, } from '../../../services/taskService';
|
||||
import { pushData, everydayRefresh } from '../../../services/connectorService';
|
||||
import { pushData, everydayRefresh, kickUser } from '../../../services/connectorService';
|
||||
import { pick } from 'lodash';
|
||||
import { setComBtlOnUserLeave } from '../../../services/comBattleService';
|
||||
|
||||
@@ -56,7 +56,11 @@ export class EntryHandler {
|
||||
let connect = await getRoleOnlineInfo(role.roleId);
|
||||
|
||||
if (connect.isOnline) { // 多地登陆踢下线
|
||||
await self.app.rpc.connector.connectorRemote.remoteLogin.toServer(connect.sid, role.roleId);
|
||||
if (connect.sid = self.app.getServerId()) {
|
||||
await kickUser(self.app, `${user.uid}`);
|
||||
} else {
|
||||
await self.app.rpc.connector.connectorRemote.remoteLogin.toServer(connect.sid, role.roleId);
|
||||
}
|
||||
}
|
||||
let serverName = this.app.getServerId();
|
||||
await roleLogin(role.roleId, user.userCode, serverName, user.pkgName); // 保存在线用户
|
||||
|
||||
@@ -3,6 +3,7 @@ import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
import { UserGuildType } from '../../../db/UserGuild';
|
||||
import { kickUser } from '../../../services/connectorService';
|
||||
export default function (app: Application) {
|
||||
new HandlerService(app, {});
|
||||
return new ConnectorRemote(app);
|
||||
@@ -12,31 +13,11 @@ export class ConnectorRemote {
|
||||
|
||||
constructor(private app: Application) {
|
||||
this.app = app;
|
||||
this.channelService = app.get('channelService');
|
||||
}
|
||||
private channelService: ChannelService;
|
||||
private maintenServers: number[] = []; // 维护中的服务器
|
||||
|
||||
public async remoteLogin(uid: string) {
|
||||
let sessionService = this.app.get('sessionService');
|
||||
let sessions = sessionService.getByUid(uid);
|
||||
if (!!sessions) {
|
||||
sessions.forEach(session => {
|
||||
let roleId = session.get('roleId');
|
||||
let sid = session.get('sid');
|
||||
let uids = [{ uid: roleId, sid }];
|
||||
this.channelService.pushMessageByUids('onRemoteLogin', resResult(STATUS.LOGIN_ERR), uids);
|
||||
});
|
||||
}
|
||||
await sessionService.akick(uid);
|
||||
}
|
||||
|
||||
public async pushMessage(uid: string, route: string, data: any) {
|
||||
let sid = pinus.app.getServerId();
|
||||
if (!!sid) {
|
||||
let uids = [{ uid, sid }];
|
||||
this.channelService.pushMessageByUids(route, resResult(STATUS.SUCCESS, { mails: data }), uids);
|
||||
}
|
||||
await kickUser(this.app, uid);
|
||||
}
|
||||
|
||||
public async setOtherUserGuildSession(params: { roleId: string, userGuild: UserGuildType}[]) {
|
||||
@@ -63,6 +44,7 @@ export class ConnectorRemote {
|
||||
}
|
||||
|
||||
public setServerMainten(maintenServers: number[]) {
|
||||
this.app.set('maintenServers', maintenServers);
|
||||
return this.maintenServers = maintenServers;
|
||||
}
|
||||
|
||||
|
||||
@@ -210,10 +210,7 @@ export class GmHandler {
|
||||
}
|
||||
|
||||
async setMaintenance() {
|
||||
let connectorServers = pinus.app.getServersByType('connector');
|
||||
for (let { id } of connectorServers) {
|
||||
pinus.app.rpc.connector.connectorRemote.setServerMainten.toServer(id, [1]);
|
||||
}
|
||||
pinus.app.rpc.connector.connectorRemote.setServerMainten.broadcast([1]);
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import { recentGuildMsgs, recentPrivateChatInfos, recentSysMsgs, recentWorldMsgs
|
||||
import { getCurTask } from './taskService';
|
||||
|
||||
import { RoleType } from '../db/Role';
|
||||
import { FrontendOrBackendSession, pinus } from 'pinus';
|
||||
import { Application, FrontendOrBackendSession, pinus } from 'pinus';
|
||||
import { resResult } from '../pubUtils/util';
|
||||
import { STATUS, PUSH_BATCH, PUSH_INTERVAL, CONSUME_TYPE } from '../consts';
|
||||
import { getAllShopList } from './shopService';
|
||||
@@ -243,4 +243,18 @@ export async function everydayRefresh() {
|
||||
}
|
||||
}, PUSH_INTERVAL)
|
||||
setMedianCe();
|
||||
}
|
||||
}
|
||||
|
||||
export async function kickUser(app: Application, uid: string) {
|
||||
let sessionService = app.get('sessionService');
|
||||
let sessions = sessionService.getByUid(uid);
|
||||
if (!!sessions) {
|
||||
sessions.forEach(session => {
|
||||
let roleId = session.get('roleId');
|
||||
let sid = session.get('sid');
|
||||
let uids = [{ uid: roleId, sid }];
|
||||
app.get('channelService').pushMessageByUids('onRemoteLogin', resResult(STATUS.LOGIN_ERR), uids);
|
||||
});
|
||||
}
|
||||
await sessionService.akick(uid);
|
||||
}
|
||||
|
||||
@@ -140,11 +140,7 @@ async function startMaintenance(maintenance: MaintenanceType, startJob?: Job) {
|
||||
}
|
||||
|
||||
// 更新connectorRemote里面的维护服务器
|
||||
let connectorServers = pinus.app.getServersByType('connector');
|
||||
for(let { id } of connectorServers) {
|
||||
await pinus.app.rpc.connector.connectorRemote.setServerMainten.toServer(id, serverIds);
|
||||
}
|
||||
|
||||
await pinus.app.rpc.connector.connectorRemote.setServerMainten.broadcast(serverIds);
|
||||
}
|
||||
|
||||
// 停止维护
|
||||
|
||||
Reference in New Issue
Block a user