import {TaskType, TaskTypeDomSubType} from '@botphus/rule';
import BotphusServerRunner, {destoryPool, TaskMessage} from '@botphus/server-runner';
const runner = new BotphusServerRunner();
(async () => {
// Create task cache file
const taskNo = await runner.createTask('Test task', new Date().getTime(), [
{
arguments: ['div'],
assertion: ['data === "wrong assertion rule"'],
subType: TaskTypeDomSubType.SUB_TYPE_GET_TEXT,
type: TaskType.TYPE_DOM
}
]);
// Start task & listen child process message
const myTaskEvent = await runner.startTask(taskNo, 'https://bing.com/');
await new Promise((resolve, reject) => {
// Get task exec message info
myTaskEvent.on('message', ([error, messageData]: TaskMessage) => {
if (error) {
global.console.log(error.stack);
}
global.console.log(messageData);
});
// Event close
myTaskEvent.on('exit', (code) => {
global.console.log('done:', code);
if (code === 1) {
return reject(new Error('Event exit error'));
}
resolve();
});
});
})() // Current botphus is using process pool to manage task, if you want to stop main process, please destory cluster pool
.then(() => {
destoryPool();
})
.catch((err) => {
global.console.log(err);
destoryPool();
});