/
eb
/
Surf
Обзор
Документация
Войти
/
eb
/
Surf
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
node_modules/browser-sync-ui/lib/plugins/network-throttle/throttle-server.js
70 строк
2 KB
EvgeniyBudaev
Initial commit
17 фев 2020, 09:02
17 фев 2020, 09:02
bb6f06f
Код
Авторство
О чём код?
var ThrottleGroup = require("stream-throttle").ThrottleGroup; module.exports = throttle; /** * */ function throttle (opts, listenHost) { var options = { local_host: listenHost, remote_host: listenHost, upstream: 10*1024, downstream: opts.speed.speed * 1024, keepalive: false }; var serverOpts = { allowHalfOpen: true, rejectUnauthorized: false }; var module = "net"; var method = "createConnection"; if (opts.key) { module = "tls"; method = "connect"; serverOpts.key = opts.key; serverOpts.cert = opts.cert; } return require(module).createServer(serverOpts, function (local) { var remote = require(module)[method]({ host: opts.target.hostname, port: opts.target.port, allowHalfOpen: true, rejectUnauthorized: false }); var upThrottle = new ThrottleGroup({ rate: options.upstream }); var downThrottle = new ThrottleGroup({ rate: options.downstream }); var localThrottle = upThrottle.throttle(); var remoteThrottle = downThrottle.throttle(); setTimeout(function () { local .pipe(localThrottle) .pipe(remote); }, opts.speed.latency); setTimeout(function () { remote .pipe(remoteThrottle) .pipe(local); }, opts.speed.latency); local.on("error", function() { remote.destroy(); local.destroy(); }); remote.on("error", function() { local.destroy(); remote.destroy(); }); }); }