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