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
Start with configuration file:
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:
Build workspace
Compile the entire workspace in release mode:
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.