From 91ed37a7e906bee0fc3522255a9b1c8b3cddb436 Mon Sep 17 00:00:00 2001 From: LiaoYijun Date: Thu, 26 Dec 2024 16:17:10 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=8B=AC=E7=AB=8B=E5=82=A8=E5=AD=98=20?= =?UTF-8?q?store=20=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wai-server/core/baileys/index.js | 36 +++++++++++++++----------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/wai-server/core/baileys/index.js b/wai-server/core/baileys/index.js index de39d03..8054d92 100644 --- a/wai-server/core/baileys/index.js +++ b/wai-server/core/baileys/index.js @@ -22,13 +22,6 @@ logger.level = 'trace'; const msgRetryCounterCache = new NodeCache(); -const store = makeInMemoryStore({ logger }); -store?.readFromFile('./baileys_store_multi.json'); -// save every 10s -setInterval(() => { - store?.writeToFile('./baileys_store_multi.json'); -}, 10_000); - waEmitter.on('message:updated', event => { console.info('msg:evt:updated', event); }); @@ -47,6 +40,14 @@ const createWhatsApp = async phone => { let qrCode = null; const channelId = generateId(); const whatsAppNo = phone; + + const storeFilename = './baileys_auth_info/baileys_store_' + phone + '_' + channelId + '.json' + const store = makeInMemoryStore({ logger }); + store?.readFromFile(storeFilename); + // save every 10s + setInterval(() => { + store?.writeToFile(storeFilename); + }, 10_000); const { state, saveCreds } = await useMultiFileAuthState('baileys_auth_info/' + phone + '_' + channelId); // fetch latest version of WA Web const { version, isLatest } = await fetchLatestBaileysVersion(); @@ -234,6 +235,10 @@ const createWhatsApp = async phone => { } } + const handleCredsUpdate = async messageUpdate => { + await saveCreds(); + } + const start = () => { return new Promise(resolve => { waSocket = makeWASocket({ @@ -250,6 +255,10 @@ const createWhatsApp = async phone => { generateHighQualityLinkPreview: false, syncFullHistory: false, }); + + // 需要在创建 Socket 后马上绑定 + store?.bind(waSocket.ev); + waSocket.ev.on('connection.update', async update => { console.log('connection update: ', update); const { connection, lastDisconnect, qr } = update; @@ -284,20 +293,9 @@ const createWhatsApp = async phone => { } }); + waSocket.ev.on('creds.update', handleCredsUpdate); waSocket.ev.on('messages.upsert', handleMessagesUpsert); waSocket.ev.on('messages.update', handleMessagesUpdate); - - waSocket.ev.on('group-participants.update', async GroupMetadata => { - console.info('group-participants.update: ', GroupMetadata); - }); - - waSocket.ev.on('creds.update', async () => { - console.info('creds.update'); - await saveCreds(); - }); - - // 不绑定不会影响扫码登录 - store?.bind(waSocket.ev); }); };