Implementing download throttling
For incoming streams, Node provides pause
and resume
methods, but not so for outbound streams. Essentially, this means we can easily throttle upload speeds in Node but download throttling requires a more creative solution.
Getting ready
We'll need a new server.js
along with a good-sized file to serve. With the dd
command-line program, we can generate a file for testing purposes.
dd if=/dev/zero of=50meg count=50 bs=1048576
This will create a 50 MB file named 50meg
which we'll be serving.
Note
For a similar Windows tool that can be used to generate a large file, check out http://www.bertel.de/software/rdfc/index-en.html.
How to do it...
To keep things as simple as possible our download server will serve just one file, but we'll implement it in a way which would allow us to easily plug in some router code to serve multiple files. First, we will require our modules and set up an options
object for file and speed settings.
var http = require('http'); var fs = require...