Implementing download throttling
Node provides pause
and resume
methods for incoming streams but not 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
file along with a big enough file to serve. With the dd
command-line program, we can generate a file for testing purposes, as follows:
dd if=/dev/zero of=50meg count=50 bs=1048576
The preceding command 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 that allows 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, as follows:
var http...