@manzoomeh/basicore.server
Version:
java script version of Manzoomeh Negaran http web server for nodejs
56 lines (53 loc) • 1.47 kB
JavaScript
import net from "net";
import HostService from "./hostService.js";
import EdgeMessage from "../edge/edgeMessage.js";
import Request from "../models/request.js";
export default class EdgeProxyHostService extends HostService {
/**@type {string} */
#ip;
/**@type {number} */
#port;
/**
* @param {string} name
* @param {string} ip
* @param {number} port
*/
constructor(name, ip, port) {
super(name);
this.#ip = ip;
this.#port = port;
}
/**
* @param {Request} request
* @returns {Promise<Response>}
*/
async processAsync(request) {
/** @type {Promise<Request>} */
const task = new Promise((resolve, reject) => {
var buffer = [];
const client = new net.Socket()
.on("data", (data) => buffer.push(data))
.on("close", function () {
const data = Buffer.concat(buffer);
try {
var msg = EdgeMessage.createFromBuffer(data);
resolve(JSON.parse(msg.payload));
} catch (e) {
reject(e);
}
})
.on("error", (e) => {
console.error(e);
reject(e);
})
.connect(this.#port, this.#ip, () => {
const msg = EdgeMessage.createAdHocMessageFromObject({
cms: request,
});
msg.writeTo(client);
});
});
var result = await task;
return this._createResponse(result);
}
}