https://github.com/thebracket/wasm_latency
Experimental: measuring latency with WASM, with the intent to build a latency under load speed testing system. This is very much experimental at this point, please don't expect it to do anything useful.
https://github.com/thebracket/wasm_latency
Last synced: 4 days ago
JSON representation
Experimental: measuring latency with WASM, with the intent to build a latency under load speed testing system. This is very much experimental at this point, please don't expect it to do anything useful.
- Host: GitHub
- URL: https://github.com/thebracket/wasm_latency
- Owner: thebracket
- Created: 2023-08-20T14:05:03.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-08-21T20:54:34.000Z (almost 3 years ago)
- Last Synced: 2025-02-28T09:19:17.632Z (over 1 year ago)
- Language: Rust
- Size: 37.1 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Web-Bandwidth
Placeholder project.
## Concept
A webserver that supports websockets. The server can:
* Provide chunks of a fixed size for timing.
* Receive chunks of a fix size for timing.
* Perform sub-MTU exchange of timestamps to approximate latency.
A WASM-enabled client site that can:
* Run a simple speed-test (one way), timing download and/or upload of chunks.
* Run up/down concurrent tests.
* Measure latency with and without load.
* Assemble the results.
General:
* Entirely open source.
* Open about methodology.
* Open to improvements and contributions.
## Inspiration list:
* https://ankitbko.github.io/blog/2022/06/websocket-latency/
## Project Structure
* `bandwidth_server` - an Axum/Tokio Rust server that hosts the tests.
* `shared_data` - data structures that are shared between client and server, along with helper functions to use them.
* `wasm_client` - a WebAssembly client designed to run in the browser. Not stand-alone.
* `bandwidth_site` - (Not yet implemented) A Typescript site designed to be server from the bandwidth server, provide the client to the end-user's browser, and display the results.