mole-rpc-transport-tcp
Version:
TCP transport for mole-rpc
35 lines (34 loc) • 1.26 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TcpTransportServer = void 0;
const net_1 = require("net");
const split2_1 = __importDefault(require("split2"));
class TcpTransportServer {
constructor(opts) {
this.opts = opts;
this.callback = () => Promise.reject(new Error("no callback"));
this.server = net_1.createServer();
this.server.listen(this.opts);
this.server.on("connection", (socket) => {
socket.pipe(split2_1.default("\n")).on("data", (line) => {
void this.callback(line)
.then((reply) => {
if (typeof reply === "string") {
socket.write(`${reply}\n`);
}
});
});
socket.on("error", () => socket.destroy());
});
}
async onData(callback) {
this.callback = callback;
}
close() {
return new Promise((resolve) => this.server.close(() => resolve()));
}
}
exports.TcpTransportServer = TcpTransportServer;