UNPKG

@manzoomeh/basicore.server

Version:

java script version of Manzoomeh Negaran http web server for nodejs

56 lines (53 loc) 1.47 kB
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); } }