Guia Rápido / Uso Básico
const fireSyncClient = require('firesync-db-client');
const myJwt = process.env.FIRESYNC_TOKEN;
const myOrigin = process.env.FIRESYNC_ORIGIN;
if (!myJwt || !myOrigin) {
console.error("Erro: Token ou Origin não definidos nas variáveis de ambiente.");
process.exit(1);
}
async function main() {
console.log("Inicializando FireSync Client...");
try {
fireSyncClient.initialize({ s: myJwt, origin: myOrigin });
} catch (initError) {
console.error("Falha na inicialização:", initError);
process.exit(1);
}
// Ouvir eventos de estado
fireSyncClient.on('state_changed', (newState) => console.log(`[APP EVENT] Estado: ${newState}`));
fireSyncClient.on('error', (err) => console.error(`[APP EVENT] Erro: ${err.message}`));
fireSyncClient.on('disconnected', (details) => console.warn(`[APP EVENT] Desconectado: Code=${details.code}, Limpo=${details.wasClean}`));
try {
console.log("Conectando...");
await fireSyncClient.connect(); // Espera conectar e autenticar
console.log("Conectado e Autenticado!");
const statusRef = fireSyncClient.ref('service/node_client/status');
console.log("Definindo status...");
await statusRef.set({ // set agora retorna Promise que espera confirmação
state: 'online',
pid: process.pid,
lastUpdate: Date.now()
});
console.log("Status definido.");
console.log("Lendo status...");
const snapshot = await statusRef.get(); // get agora retorna Promise que espera resposta
if (snapshot.exists()) {
console.log("Status lido:", snapshot.val());
} else {
console.log("Status não encontrado.");
}
// Desconecta após o teste
console.log("Desconectando...");
fireSyncClient.disconnect();
} catch (error) {
console.error("Erro durante a execução:", error);
// Tenta desconectar em caso de erro também
if(fireSyncClient.getConnectionState() !== 'disconnected') {
fireSyncClient.disconnect();
}
}
}
main();
// Mantém o processo rodando um pouco para ver logs de desconexão (se houver)
// Em uma aplicação real, você manteria o processo rodando pelo tempo necessário.
// setTimeout(() => { console.log("Encerrando script de exemplo."); }, 5000);
Atualizado