const { websocketService, websocketManager } = require('../../core'); // Import from core/index.js const { createWhatsApp } = require('../../core/baileys'); // Import from core/index.js const generateId = require('../../utils/generateId.util'); // const { createConnection, getConnection } = require('../../core/whatsapp/connection'); // const { getAvailableConnection } = require('../../core/whatsapp/sessionStore'); const waInstance = { wa: null, }; exports.newConnect = async ctx => { try { const { phone } = ctx.query; const whatsApp1 = await createWhatsApp(phone); // console.info(whatsApp1); whatsApp1.on('connection.open', async sock => { console.info('收到:connection.open'); // await sock.sendMessage('8617607730395' + '@s.whatsapp.net', { text: '收到事件,发送消息' }); await whatsApp1.sendTextMessage('8617607730395', '收到事件,发送消息'); }); const qr = await whatsApp1.start(); waInstance.wa = whatsApp1; ctx.assert(whatsApp1, 503, 'No available connections'); const { sessionId } = websocketService.createSession(phone, whatsApp1); return { qr }; } catch (error) { console.error('create connection error', error); ctx.assert(null, 500, 'Failed to create connection or generate QR code.'); // const wa = findConnection('from'); // wa.senedTextMessage(to, text); } }; exports.testSend = async ctx => { const { from, to, content } = ctx.request.body; waInstance.wa.sendTextMessage(to, content); return { waInstance, ret: 'Message sent successfully' }; }; exports.getAll = async ctx => { const sessions = websocketService.sessions; return Array.from(sessions); }; /** * @deprecated */ exports.getIn = async ctx => { // Wait for at least one connection to be established (or handle the case where no connections are available) // await new Promise(resolve => { // const checkConnections = () => { // if (websocketManager.getConnections().length > 0) { // resolve(); // } else { // setTimeout(checkConnections, 100); // Check again after 100ms // } // }; // checkConnections(); // }); const availableWs = websocketManager.getAvailableConnection(); if (!availableWs) { // ctx.status = 503; // ctx.body = { message: 'No available connections' }; ctx.assert(availableWs, 503, 'No available connections'); return; } // return availableWs; const { sessionId, url } = websocketService.createSession(availableWs); return { sessionId, url, message: 'Connection established' }; // availableWs };