Crates.io | async-datachannel |
lib.rs | async-datachannel |
version | 0.4.0 |
source | src |
created_at | 2021-09-14 20:49:34.069282 |
updated_at | 2022-11-29 08:15:37.924725 |
description | Async Wrapper for datachannel |
homepage | https://github.com/wngr/async-datachannel |
repository | https://github.com/wngr/async-datachannel |
max_upload_size | |
id | 451461 |
size | 56,024 |
Async wrapper for the datachannel
crate. For a complete example check the
examples directory.
Note that this crate currently is made to work only with the tokio runtime. If you're interested in supporting other runtimes, let me know.
use async_datachannel::{Message, PeerConnection, PeerId, RtcConfig};
use futures::io::{AsyncReadExt, AsyncWriteExt, channel::mpsc};
let ice_servers = vec!["stun:stun.l.google.com:19302"];
let conf = RtcConfig::new(&ice_servers);
let (tx_sig_outbound, mut rx_sig_outbound) = mpsc::channel(32);
let (tx_sig_inbound, rx_sig_inbound) = mpsc::channel(32);
let listener = PeerConnection::new(&conf, (tx_sig_outbound, rx_sig_inbound))?;
// TODO: Wire up `tx_sig_inbound` and `rx_sig_outbound` to a signalling
// mechanism.
let mut dc = listener.dial("Hangout").await?;
dc.write(b"Hello").await?;
let mut buf = vec![0; 32];
let n = dc.read(&mut buf).await?;
assert_eq!(b"World", &buf[..n]);
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.