delay-proxy

Development server to simulate slow bandwidth

Usage no npm install needed!

<script type="module">
  import delayProxy from 'https://cdn.skypack.dev/delay-proxy';
</script>

README

delay-proxy

npm version

You may know and use the chrome dev tools and its Network tab where you can emulate slow network connections. The problem is that it applies to all requests, you can't emulate together:

  • a slow network
  • a slow api.foo.com in general
  • only a very slow endpoint on api.bar.com

With delay-proxy, you can proxy your requests specifying a delay and a url.

http://localhost:8001/delay/{delay-in-ms}/{url}

Example calls:

  • image: http://localhost:8001/delay/2000/https://via.placeholder.com/350x150/F00000/FFFFFF?text=Hello+world
  • json: curl http://localhost:8001/delay/1000/https://jsonplaceholder.typicode.com/posts/1/comments

Usage

Command line

Install globally

npm install -g delay-proxy

Once that done, you can launch it from anywhere with:

delay-proxy

Available options:

  • delay-proxy --help
  • delay-proxy --version
  • delay-proxy --port 9000: lets you specify which port you want to use (default: 8001)

Install locally

You might not like to install the package globally or wanna ship and use this package as a dev dependency in your project:

npm install --save-dev delay-proxy

Run it using npx (an npm package runner shipped with npm since v5.2.0):

npx delay-proxy

As a module

delay-proxy also works as a required module.

const PORT = 8001;
const LOCAL_IP = require("my-local-ip")(); // optional

const { makeServer } = require("delay-proxy");

makeServer({ port: PORT, localIp: LOCAL_IP }).listen(PORT, () =>
  console.log(
    "delay-proxy now listening on",
    `http://localhost:${PORT}`,
    `${LOCAL_IP}:${PORT}`
  )
);

Contributing

  1. Fork this repository to your own GitHub account and then clone it to your local device
  2. Uninstall delay-proxy if it's already installed: npm uninstall -g delay-proxy
  3. Link it to the global module directory: npm link

After that, you can use the delay-proxy command everywhere.

Only contribute on the server

If your feature/fix isn't about the cli but the server, you don't need to npm link. Make sure you npm install then run:

npm run dev

This will launch the server and reload it when you update the source code, thanks to nodemon.

Contributing guidelines

  • follow the AngularJS git commit guidelines for your commit messages (it make it easier to generate changelog)
    • to generate changelog: npm run generate-changelog -- v1.1.0 v1.2.0
  • your code will automatically be:

Author

Christophe Rosset (@topheman) - labs.topheman.com