41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
const { env } = require('./config.js');
|
|
const browser = require('./browser.js');
|
|
const fs = require('fs/promises');
|
|
const logger = require('./logger.js');
|
|
|
|
function parseEvent(evt) {
|
|
try {
|
|
evt = JSON.parse(evt)
|
|
} catch (e) {
|
|
logger.error(`failed to parse event=${evt}`)
|
|
}
|
|
if (typeof evt?.action === "number") {
|
|
logger.debug(`event with action=${evt.action}`);
|
|
if (evt.action === 0) return false; // heartbeat
|
|
if (evt.action === 15) return true; // chat message
|
|
} else {
|
|
logger.warn(`event with NO ACTION. evt=${JSON.stringify(evt)} ${typeof evt}`)
|
|
}
|
|
}
|
|
|
|
|
|
(async function main() {
|
|
const gen = browser(); // this is an async generator
|
|
|
|
for await (const event of gen) {
|
|
|
|
logger.debug(`Received event from browser: ${event}`);
|
|
|
|
const signal = parseEvent(event)
|
|
|
|
if (signal) {
|
|
try {
|
|
await fs.writeFile(env.VODDO_RETRY_FILE, `reset ${Date.now()}\n`);
|
|
logger.debug(`Touched retry file at ${env.VODDO_RETRY_FILE}`);
|
|
} catch (err) {
|
|
logger.error(`Failed to write retry file: ${err.message}`);
|
|
}
|
|
}
|
|
}
|
|
})();
|