2 stable releases
1.1.0 | Jan 7, 2023 |
---|---|
1.0.1 | Jan 1, 2023 |
#738 in Network programming
Used in turn-server
195KB
2.5K
SLoC
TURN-RS
TURN Server implemented by ❤️ Rust
A pure rust-implemented turn server, different from coturn, provides a more flexible external control API and provides the same performance and memory footprint.
Who uses it?
Table of contents
Features
- You can use the HTTP protocol to control the turn-server or obtain the running status from the outside.
- Webhooks allow subscription to certain events on the server. When one of these events is fired, we will send an HTTP PUT payload to the URL configured by the webhook.
- The key pair used when defining the authentication in the configuration file.
- Authenticating requests through webhooks.
Crates
stun
, fast and zero-cost stun message decoder and encoder. (crate
).turn
, a library for handling turn sessions. (crate
).turn-server
, implementation of turn server based on turn library. (api
)
Usage
cargo install turn-server
Start with configuration file:
turn-server --config=/etc/turn_server/config.toml
Please check the example configuration file for details: turn_server.toml
Building
Prerequisites
You need to install the Rust toolchain, if you have already installed it, you can skip it, Install Rust, then get the source code:
git clone https://github.com/colourful-rtc/turn-rs
Build workspace
Compile the entire workspace in release mode:
cd turn-rs
cargo build --release
After the compilation is complete, you can find the binary file in the "target/release" directory.
Benchmark
stun_decoder/channel_bind ...[time: 20.606 ns] ...[thrpt: 4.8812 GiB/s]
stun_decoder/binding_request ...[time: 20.862 ns] ...[thrpt: 4.2856 GiB/s]
License
GPL Copyright (c) 2022 Mr.Panda.
Dependencies
~3.5–8MB
~131K SLoC