🎈 perf(加密): 推送的kv不每次加密而是缓存

This commit is contained in:
luying
2022-12-08 15:51:15 +08:00
parent a83deeff5f
commit e46228d09b
10 changed files with 109 additions and 14 deletions
+32 -11
View File
@@ -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 }
}