@cliz/inlets
Version:
Cloud Native Tunnel
44 lines (43 loc) • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const net = require("net");
const doreamon_1 = require("@zodash/doreamon");
const utils_1 = require("../../../utils");
const debug = require('debug')('inlets:client:http');
const logger = doreamon_1.default.logger.getLogger('client:http');
async function http(port, host, socket, { id, data: _data }) {
const data = await utils_1.dataProcessor.client.onRequest(_data);
debug('request:', data);
const req = new utils_1.Request(data);
request(req, port, host, data, async (response, status, statusText) => {
debug('response:', response.toString('utf8'));
if (typeof status !== 'undefined') {
logger.info(`${req.method} ${req.path} ${status} ${statusText}`);
}
const data = response.toString('base64');
socket.emit('response', {
id,
data: await utils_1.dataProcessor.client.response(data),
});
}, () => {
debug('request end');
});
}
exports.default = http;
function request(req, port, host, data, onData, onEnd) {
const client = new net.Socket();
client.connect(+port, host, () => {
});
client.on('data', data => {
const _res = new utils_1.Response(data.toString('utf8'));
onData(data, _res.status, _res.statusText);
});
client.on('close', () => {
onEnd();
});
client.on('error', (error) => {
console.log('request error:', error);
});
client.write(data);
}
;