Saltar al contenido principal

Ciclo de Vida de la Conexión

Flujo

init() → connect() → evento "connected" → operativo → "disconnected" → reconexión automática → "connected"

Inicio normal:

const { jid } = await client.init();  // Opens store, returns JID if already paired
if (!jid) {
await client.getQRChannel(); // Set up QR pairing (first time only)
}
await client.connect(); // Starts connection (returns immediately)
// Wait for "connected" event before sending messages

Eventos clave

EventoSignificadoAcción
connectedConexión a WhatsApp establecidaEs seguro enviar mensajes
disconnectedConexión perdidaLa reconexión automática está integrada, no se requiere acción
logged_outSesión revocada (el usuario desvinculó el dispositivo)Debes re-emparejar — elimina el store y comienza de nuevo
stream_errorError de protocolo de WhatsAppGeneralmente seguido por reconexión automática
keep_alive_timeoutLos pings de keep-alive están fallandoLa conexión puede estar degradada
keep_alive_restoredKeep-alive recuperadoLa conexión está saludable de nuevo

Patrón de conexión resiliente

import { createClient } from "@whatsmeow-node/whatsmeow-node";

const client = createClient({ store: "session.db" });

client.on("connected", ({ jid }) => {
console.log(`Connected as ${jid}`);
});

client.on("disconnected", () => {
console.log("Disconnected — waiting for auto-reconnect...");
});

client.on("logged_out", ({ reason }) => {
console.error(`Logged out: ${reason}. Must re-pair.`);
process.exit(1);
});

const { jid } = await client.init();
if (!jid) {
await client.getQRChannel();
client.on("qr", ({ code }) => {
// Render QR code for pairing
});
}
await client.connect();

La reconexión automática siempre está habilitada — whatsmeow maneja la reconexión internamente. Solo necesitas manejar logged_out (sesión revocada, debes re-emparejar).