# node-turbotest

> A quick and easy speed tester for uWebSockets and WS.

Latest version **1.0.0** (published 2017-12-23) · MIT license · 0 weekly downloads

## Install

```sh
npm install node-turbotest
pnpm add node-turbotest
yarn add node-turbotest
bun add node-turbotest
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2017-12-23 |
| First published | 2017-12-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Jason Idris |
| Maintainers | jasonidris |
| Keywords | node.js, speedtest |

## Links

- npm: https://www.npmjs.com/package/node-turbotest
- Repository: https://github.com/thebaconnaut/node-turbotest
- Homepage: https://github.com/thebaconnaut/node-turbotest#readme
- Issues: https://github.com/thebaconnaut/node-turbotest/issues
- npm.io page: https://npm.io/package/node-turbotest

## Dependencies (2)

- [uws](https://npm.io/package/uws.md) ^9.14.0
- [node-timers](https://npm.io/package/node-timers.md) 0.0.2

## Recent versions

- 1.0.0 (latest) — 2017-12-23

## README

# node-turbotest
## A quick and easy speed tester for uWebSockets and WS.

*Note:* Look at the example for help. You can probably figure it out from there.

### Usage
```var turbotest = require('node-turbotest');```
and call turbotest on connection.
```
wss.on('connection', function (ws) {
    turbotest.test(ws);
    // do some unrelated stuff down here...
});
```
Listen for any non-specific test with data.
```
// m is megabit per second, one-eighth of a megabyte
turbo.on('complete', function (m) {
    console.log("The clients' speed is " + m + " mbps.");
})
```
~~Test a specific client.~~ I guess gone, until a pull request comes or someone answers [this.](https://github.com/websockets/ws/issues/1260)

---
### Why did I build it?
I'm building a real-time engine that requires knowledge of all clients' mbps speed. Through this, Kitten will have better and more consistent streaming. And this might be grounds for machine learning, too!

### Fun fact
A *megabit* is not a *megabyte.* When an ISP says, "You get 10 mbps for this plan," it does NOT mean an average sized app download (50 MB) in 5 seconds; it would be 40 seconds. A *megabit* is one-eighth of a *megabyte.* Thus, the library emits just a *megabit* to avoid confusion. Multiply that times 8, and you have *megabyte*.

### Notes
This library only supports measuring download speed of the client. Trying upload resulted in *NaN (Not a Number) mbps.* This is all *I* really need, so if you need it, you can implement it, and I would be more than happy to get a pull request!

The Internet is not magic and follows physics; the farther away the datacenter; the worse off the results will be. This is why you should probably test with a device that is not your computer, as `localhost` is local, and you'll be amazed at the speeds to get a crappier one later.

The client must wait for a message, and respond with `"recieved"`.  This speed test does not work otherwise. A quick Swift implementation can be seen below.
```
import Starscream

// ...

socket.onText = { (text: String) in
    // do some validation if needed to just get the speed test
    socket.write(string: "received")
}
```

---
_Source: https://npm.io/package/node-turbotest · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
