4个版本
0.1.3 | 2024年7月18日 |
---|---|
0.1.2 | 2024年7月12日 |
0.1.1 | 2024年7月10日 |
0.1.0 | 2024年7月10日 |
427 在 WebAssembly
每月 127 次下载
22KB
410 行
介绍
这是一个简单的Rust + WASM点对点库,基于WebRTC构建。在以下示例中,我们将连接到另一个对等点并向其发送Hello world
use wasm_p2p::{wasm_bindgen_futures, P2P};
fn main() {
wasm_bindgen_futures::spawn_local(main_async());
}
async fn main_async() {
let p2p = P2P::new("wss://signaling.luisherasme.com").await;
let peer = p2p.connect("other-peer-id").await;
peer.send("Hello world");
}
安装
cargo add wasm_p2p
使用
设置
为了建立点对点连接,我们需要将我们的IP地址等信息发送给另一个对等点,以便它知道如何到达我们。我们用来交换这些信息的服务器称为信令服务器。
要初始化P2P
客户端,您需要传递信令服务器的URL
let mut p2p = P2P::new("wss://signaling.luisherasme.com").await;
在上一个示例中,我们使用wss://signaling.luisherasme.com
作为信令服务器。此服务器免费,代码是开源的,因此您可以创建自己的版本。代码可在此处找到。
对等ID
信令服务器为每个对等点分配一个随机、唯一的ID
let id = p2p.id();
连接
您可以通过调用带有目标对等点ID的p2p.connect
来启动连接。
let connection = p2p.connect("OTHER_PEER_ID").await;
您可以通过调用p2p.receive_connections
来获取所有新的连接。
let connections = p2p.receive_connections();
接收消息
要接收连接到您的其他对等点的消息,您可以调用receive
方法
let messages = connection.receive();
发送消息
要向另一个对等点发送消息,您必须使用send
方法
let data = "EXAMPLE DATA YOU CAN SEND ANY &STR";
peer.send(data);
自定义ICE服务器
您可以设置自己的ICE服务器
use wasm_p2p::{wasm_bindgen_futures, ConnectionUpdate, P2P, IceServer};
fn main() {
wasm_bindgen_futures::spawn_local(main_async());
}
async fn main_async() {
let mut p2p = P2P::new("wss://signaling.luisherasme.com");
let ice_servers = vec![IceServer {
urls: String::from("stun:stun.l.google.com:19302"),
credential: None,
credential_type: None,
username: None,
}];
p2p.set_ice_servers(ice_servers);
}
此外,您可以从&str
创建ICE服务器
use wasm_p2p::{wasm_bindgen_futures, ConnectionUpdate, P2P, IceServer};
fn main() {
wasm_bindgen_futures::spawn_local(main_async());
}
async fn main_async() {
let mut p2p = P2P::new("wss://signaling.luisherasme.com");
let ice_servers = vec![IceServer::from("stun:stun.l.google.com:19302")];
p2p.set_ice_servers(ice_servers);
}
示例
依赖
~8–11MB
~196K SLoC