1 个不稳定版本
0.4.0 |
|
---|---|
0.3.0 | 2022 年 2 月 7 日 |
#953 在 WebAssembly 中
38KB
641 行
wasm-peers
此crate提供了一个简单的包装器,用于围绕 WebRTC 和 DataChannels 进行对等连接。
概述
正如agar.io的创造者著名地表示WebRTC 很难。这个库旨在帮助,通过抽象出所有设置,并提供一种简单的方式在数据通道上发送和接收消息。
这就像从配套crate提供信号服务器实例的地址,并指定两个回调一样简单。一个用于连接打开时,另一个用于接收消息时。之后,您可以发送和接收消息,无需担心实现细节。
库包含三种网络拓扑,one-to-one
,创建两个对等点之间的相等连接,one-to-many
,指定主机和任意数量的客户端,以及many-to-many
,为每对对等点创建连接,并允许向其中的任何一个发送消息。
示例
此示例显示两个对等点相互发送 ping
和 pong
消息。
use wasm_peers::ConnectionType;
use wasm_peers::one_to_one::NetworkManager;
use web_sys::console;
// there must be a signaling server from accompanying crate running on this port
const SIGNALING_SERVER_URL: &str = "ws://0.0.0.0:9001/one-to-one";
fn main() {
// there must be some mechanism for exchanging session ids between peers
let session_id = SessionId::new("some-session-id".to_string());
let mut peer1 = NetworkManager::new(
SIGNALING_SERVER_URL,
session_id.clone(),
ConnectionType::Stun,
).unwrap();
let peer1_clone = peer1.clone();
let peer1_on_open = move || peer1_clone.send_message("ping!").unwrap();
let peer1_on_message = {
move |message| {
console::log_1(&format!("peer1 received message: {}", message).into());
}
};
peer1.start(peer1_on_open, peer1_on_message).unwrap();
let mut peer2 = NetworkManager::new(
SIGNALING_SERVER_URL,
session_id,
ConnectionType::Stun,
).unwrap();
let peer2_on_open = || { /* do nothing */ };
let peer2_clone = peer2.clone();
let peer2_on_message = {
let peer2_received_message = peer2_received_message.clone();
move |message| {
console::log_1(&format!("peer2 received message: {}", message).into());
peer2_clone.send_message("pong!").unwrap();
}
};
peer2.start(peer2_on_open, peer2_on_message).unwrap();
}
有关其他拓扑的示例,请参阅文档。
有关更高级的示例,请查看使用此库构建的 "生产就绪" 应用:Live Document。
作者
Tomasz Karwowski
LinkedIn
版本历史
- 0.3
- 首次公开发布
许可证
此项目根据以下其中之一授权
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
致谢
以下项目帮助我掌握 Rust 中的 WebRTC
此外,还要特别感谢与我一起完成本科论文的同学们。
依赖关系
~10–20MB
估计值:~272K SLoC