🎈 perf(加密): 推送的kv不每次加密而是缓存
This commit is contained in:
@@ -172,25 +172,46 @@ export function removeFromTeamChannel(teamCode: string, roleId: string) {
|
||||
}
|
||||
|
||||
function getKvFromMemory() {
|
||||
let k = pinus.app.get('aeaKey');
|
||||
let v = pinus.app.get('aesIV');
|
||||
let aesKey = pinus.app.get('aesKey');
|
||||
let aesIV = pinus.app.get('aesIV');
|
||||
let originK = pinus.app.get('originK');
|
||||
let originV = pinus.app.get('originV');
|
||||
let kvRefTime = pinus.app.get('kvRefTime');
|
||||
let now = new Date().setMinutes(0, 0, 0);
|
||||
if(!kvRefTime || now - kvRefTime >= 60 * 60 * 1000) {
|
||||
k = genCode(24);
|
||||
v = genCode(16);
|
||||
pinus.app.set('aeaKey', k);
|
||||
pinus.app.set('aesIV', v);
|
||||
pinus.app.set('kvRefTime', now);
|
||||
originK = genCode(24);
|
||||
originV = genCode(16);
|
||||
let msgEncrypt = new MsgEncrypt({ k: originK, v: originV });
|
||||
({ aesKey, aesIV } = msgEncrypt.getEncodeKv());
|
||||
|
||||
setKvToRemote(originK, originV, aesKey, aesIV, now);
|
||||
}
|
||||
return { k, v }
|
||||
return { aesKey, aesIV, originK, originV, now }
|
||||
}
|
||||
|
||||
function setKvToRemote(originK: string, originV: string, aesKey: string, aesIV: string, now: number) {
|
||||
pinus.app.rpc.activity.activityRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now);
|
||||
pinus.app.rpc.battle.battleRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now);
|
||||
pinus.app.rpc.chat.chatRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now);
|
||||
pinus.app.rpc.connector.connectorRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now);
|
||||
pinus.app.rpc.guild.guildRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now);
|
||||
pinus.app.rpc.order.orderRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now);
|
||||
pinus.app.rpc.role.roleRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now);
|
||||
pinus.app.rpc.systimer.systimerRemote.setKvToMemory.broadcast(originK, originV, aesKey, aesIV, now);
|
||||
}
|
||||
|
||||
export function setKvToMemory(originK: string, originV: string, aesKey: string, aesIV: string, now: number) {
|
||||
pinus.app.set('originK', originK);
|
||||
pinus.app.set('originV', originV);
|
||||
pinus.app.set('aesKey', aesKey);
|
||||
pinus.app.set('aesIV', aesIV);
|
||||
pinus.app.set('kvRefTime', now);
|
||||
}
|
||||
|
||||
function encryptMsg(event: string, json: any) {
|
||||
if(checkNotEncryptRoute(event)) return json
|
||||
let kv = getKvFromMemory();
|
||||
let msgEncrypt = new MsgEncrypt(kv);
|
||||
let { aesKey, aesIV } = msgEncrypt.getEncodeKv();
|
||||
let { aesKey, aesIV, originK, originV } = getKvFromMemory();
|
||||
let msgEncrypt = new MsgEncrypt({ originK, originV });
|
||||
let data = msgEncrypt.encryptMsg(json);
|
||||
return { data, k: aesKey, v: aesIV }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user