修改 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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user