P2P WebRTC connection establishment and pooling. Tx5 uses [SBD](https://github.com/holochain/sbd) as the WebRTC signaling protocol for connection establishment, providing an interface where you can attempt to send data to any known peer with the expectation that Tx5 will open a connection to that peer or use an existing open connection.
[](http://holochain.org/)
[](https://forum.holochain.org)
[](https://chat.holochain.org)
[](https://opensource.org/licenses/MIT)
[](https://www.apache.org/licenses/LICENSE-2.0)
### Tx5
- [ tx5 ](https://github.com/holochain/tx5/tree/main/crates/tx5-core) - [  ](https://crates.io/crates/tx5) - The main holochain tx5 webrtc networking crate integrating the other code in this monorepo.
### Tx5 Support Crates
- [tx5-connection](https://github.com/holochain/tx5/tree/main/crates/tx5-connection) - [](https://crates.io/crates/tx5-connection) - Holochain webrtc connection.
- [tx5-core](https://github.com/holochain/tx5/tree/main/crates/tx5-core) - [](https://crates.io/crates/tx5-core) - Core types used in other tx5 crates.
- [tx5-online](https://github.com/holochain/tx5/tree/main/crates/tx5-online) - [](https://crates.io/crates/tx5-online) - Network online connectivity status events.
- [tx5-go-pion-turn](https://github.com/holochain/tx5/tree/main/crates/tx5-go-pion-turn) - [](https://crates.io/crates/tx5-go-pion-turn) - Rust process wrapper around tx5-go-pion-turn executable.
- [tx5-go-pion-sys](https://github.com/holochain/tx5/tree/main/crates/tx5-go-pion-sys) - [](https://crates.io/crates/tx5-go-pion-sys) - Low level rust bindings to the go pion webrtc library.
- [tx5-go-pion](https://github.com/holochain/tx5/tree/main/crates/tx5-go-pion) - [](https://crates.io/crates/tx5-go-pion) - Higher level rust bindings to the go pion webrtc library.
- [tx5-signal](https://github.com/holochain/tx5/tree/main/crates/tx5-signal) - [](https://crates.io/crates/tx5-signal) - Holochain webrtc signal client.
- [tx5-demo](https://github.com/holochain/tx5/tree/main/crates/tx5-demo) - [](https://crates.io/crates/tx5-demo) - Demo showing off tx5 p2p connectivity.
#### tx5-connection
Holochain webrtc connection.
Starts by sending messages over the sbd signal server, if we can
upgrade to a proper webrtc p2p connection, we do so.
#### WebRTC Backend Features
Tx5 can be backed currently by 1 of 2 backend webrtc libraries.
- <b><i>`*`DEFAULT`*`</i></b> `backend-libdatachannel` - WebRTC library
written in C++.
- [https://github.com/paullouisageneau/libdatachannel](https://github.com/paullouisageneau/libdatachannel)
- `backend-go-pion` - The pion webrtc library
written in Go (golang).
- [https://github.com/pion/webrtc](https://github.com/pion/webrtc)
The go pion library was the original implementation, but as libdatachannel
has reached stability, we have switched it over to be the default as
it is much easier to write rust FFI bindings to C++ code than Go code.