Janus plugin to act as a kind of SFU for game networking data.
Перейти к файлу
Greg Fodor 66b36965b5 Add more efficient publisher lookup without extra data structure 2020-04-07 03:08:19 +00:00
client Support sending data between clients over signalling transport 2018-09-13 16:26:01 -07:00
docs Support sending data between clients over signalling transport 2018-09-13 16:26:01 -07:00
src Add more efficient publisher lookup without extra data structure 2020-04-07 03:08:19 +00:00
.gitignore Remove outdated squawkers stuff 2018-06-21 17:16:44 -07:00
.travis.yml Add Travis config 2017-10-05 16:33:45 -07:00
CODE_OF_CONDUCT.md Clean up CoC 2019-04-01 12:45:46 -07:00
Cargo.lock Run one message thread per CPU 2020-04-04 02:21:38 +00:00
Cargo.toml Run one message thread per CPU 2020-04-04 02:21:38 +00:00
Jenkinsfile Add colorization to Jenkinsfile 2017-12-08 15:11:46 -08:00
LICENSE Add MPL 2017-10-07 03:08:17 -07:00
Makefile Don't recompile in make release 2018-05-29 15:38:27 -07:00
README.md Update README 2020-04-01 03:14:41 -07:00
janus.plugin.sfu.cfg.example Set configurable message_threads 2020-04-04 19:26:15 +00:00
rustfmt.toml Slightly less greatly rustfmt some things 2019-12-10 16:29:16 -08:00

README.md

janus-plugin-sfu

Build Status

Janus plugin to serve as a WebRTC Selective Forwarding Unit (SFU) for game networking data. It's the current backend for Mozilla Hubs. It's mostly just for being a simple, plug-and-play, star-topology SFU that you can use instead of being peer-to-peer.

See here for API documentation on how to communicate with the plugin.

PRs and GitHub issues are welcome.

How do I use this?

This is a plugin for Janus, so you'll need to install and run Janus first. The installation instructions on GitHub are canonical. It's compatible with Janus version 0.9.0 and later, although sometimes Janus makes changes that break plugins.

This plugin should be compatible with any OS that can run Janus; that includes Linux, OS X, and Windows via WSL. If you use a version from a package manager, you might want to check to make sure it has data channel support, which is a compile-time option. (Debian and Ubuntu have it.)

Dependencies

These are the native dependencies necessary for building the Rust plugin. For Janus's dependencies, consult its documentation.

$ sudo apt install libglib2.0-dev libjansson-dev

Building

$ cargo build [--release]

Testing

$ cargo test

Installing

Install the library output by the build process (e.g. ./target/release/libjanus_plugin_sfu.so) into the Janus plugins directory (e.g. /usr/lib/janus/plugins). Restart Janus to activate.

Configuration and usage

The plugin accepts a configuration file in the Janus configuration directory named janus.plugin.sfu.cfg containing key/value pairs in INI format. An example configuration file is provided as janus.plugin.sfu.cfg.example.

You can test your install by pointing a browser at the tiny.html client provided in the client directory. If you open two browser windows, you should be able to share your microphone, share your screen, and send data channel messages in one, and see the results in the other.