@cliz/inlets
Version:
Cloud Native Tunnel
36 lines (35 loc) • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createMonitor = void 0;
const http = require("http");
const doreamon_1 = require("@zodash/doreamon");
const ws_1 = require("./ws");
const tcp_1 = require("./tcp");
function createMonitor(ctx, options) {
const logger = doreamon_1.default.logger.getLogger('monitor');
const server = http.createServer();
const ws = (0, ws_1.createWebSocketMonitor)(ctx, options);
const tcp = (0, tcp_1.createTCPMonitor)(ctx, {
...options,
port: options.tcpPort,
});
const tunnel = (callback) => {
ws.emitter.on('tunnel', (data) => {
callback(data);
});
};
ws.ws.attach(server);
server.listen(options.port, '0.0.0.0', () => {
logger.info(`Version: ${options.version}`);
logger.info(`Monitor: http://127.0.0.1:${options.port}`);
logger.info(`Monitor(tcp): tcp://127.0.0.1:${options.tcpPort}`);
logger.info(`Domain: ${options.domain}`);
});
return {
ws,
tcp,
server,
tunnel,
};
}
exports.createMonitor = createMonitor;