UNPKG

mole-rpc-transport-tcp

Version:
51 lines (50 loc) 1.79 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TcpTransportClient = void 0; const net_1 = require("net"); const split2_1 = __importDefault(require("split2")); class TcpTransportClient { constructor(opts) { this.opts = opts; this.callback = () => undefined; } connect() { if (!this.connecting) { this.connecting = new Promise((resolve, reject) => { var _a; const socket = net_1.createConnection(this.opts); const timer = setTimeout(() => { socket.destroy(); reject(new Error("timeout")); }, (_a = this.opts.connectTimeout) !== null && _a !== void 0 ? _a : 30000); socket.once("connect", () => { clearTimeout(timer); resolve(socket); }); socket.on("error", () => undefined); socket.on("close", () => this.connecting = undefined); socket.pipe(split2_1.default("\n")).on("data", (line) => this.callback(line)); }); } return this.connecting; } onData(callback) { this.callback = callback; } async sendData(data) { const socket = await this.connect(); socket.write(`${data}\n`); } close() { if (!this.connecting) { return; } this.connecting .then((socket) => socket.destroy()) .catch(() => undefined); } } exports.TcpTransportClient = TcpTransportClient;