UNPKG

sp-streams

Version:

Streamplace Streams for Piping Video Around and Stuff

83 lines (66 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = function () { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, port = _ref.port; var clients = []; var server = _net2.default.createServer(function (c) { clients.push(c); // 'connection' listener log("client connected"); c.on("error", function () { log("client errored"); clients = clients.filter(function (client) { return client !== c; }); }); c.on("end", function () { log("client disconnected"); clients = clients.filter(function (client) { return client !== c; }); }); }); server.on("error", function (err) { throw err; }); var portProm = new Promise(function (resolve, reject) { var listen = void 0; if (port) { listen = server.listen.bind(server, port); } else { listen = server.listen.bind(server); } listen(function () { var port = server.address().port; log("tcp server listening on port " + port); resolve(port); }); }); var passThrough = new _stream2.default.PassThrough(); passThrough.server = server; passThrough.getPort = function () { return portProm; }; passThrough.on("data", function (chunk) { clients.forEach(function (c) { return c.write(chunk); }); }); passThrough.on("end", function () { server.close(); }); return passThrough; }; var _net = require("net"); var _net2 = _interopRequireDefault(_net); var _stream = require("stream"); var _stream2 = _interopRequireDefault(_stream); var _path = require("path"); var _debug = require("debug"); var _debug2 = _interopRequireDefault(_debug); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // this stream should "auto-resume". don't send it data if you want backpressure var log = (0, _debug2.default)("sp:tcp-egress-stream");