@copperjs/copper
Version:
A lightweight chromium grid
59 lines • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeServer = void 0;
const node_fetch_1 = require("node-fetch");
const server_1 = require("../standalone/server");
const logger_1 = require("../logger");
const utils_1 = require("../common/utils");
const config_1 = require("./config");
class NodeServer extends server_1.StandaloneServer {
constructor(serverConfig) {
super(serverConfig);
}
async listen() {
const result = await super.listen();
await this.register();
return result;
}
async stop() {
const result = await super.stop();
await this.deregister();
return result;
}
async register(retries = config_1.nodeConfig.value.registerRetries) {
try {
await node_fetch_1.default(`http://${config_1.nodeConfig.value.hubHost}:${config_1.nodeConfig.value.hubPort}/grid/node`, {
method: 'POST',
body: JSON.stringify({ config: config_1.nodeConfig.value }),
headers: { 'Content-Type': 'application/json' },
});
}
catch (err) {
if (retries <= 0) {
throw err;
}
logger_1.logger.error('error registering node. retrying in 5 seconds');
await utils_1.delay(config_1.nodeConfig.value.registerInterval);
process.nextTick(() => this.register(retries - 1));
}
}
async deregister(retries = config_1.nodeConfig.value.deregisterRetries) {
try {
await node_fetch_1.default(`http://${config_1.nodeConfig.value.hubHost}:${config_1.nodeConfig.value.hubPort}/grid/node`, {
method: 'DELETE',
body: JSON.stringify({ config: config_1.nodeConfig.value }),
headers: { 'Content-Type': 'application/json' },
});
}
catch (err) {
if (retries <= 0) {
throw err;
}
logger_1.logger.error('error deregistering node. retrying in 5 seconds');
await utils_1.delay(config_1.nodeConfig.value.deregisterInterval);
process.nextTick(() => this.deregister(retries - 1));
}
}
}
exports.NodeServer = NodeServer;
//# sourceMappingURL=server.js.map