4个版本 (破坏性更新)
0.4.0 | 2024年6月18日 |
---|---|
0.3.0 | 2024年6月17日 |
0.2.0 | 2024年6月17日 |
0.1.0 | 2024年6月7日 |
#9 在 #signaling-server
每月下载量 146次
用于 ezrtc-server
30KB
504 行
ezrtc
- 使用数据通道和简单的信令服务器实现跨平台的WebRTC通信。
用法
use ezrtc::{host::EzRTCHost, socket::DataChannelHandler};
use log::{info, warn, LevelFilter};
use simplelog::{ColorChoice, TermLogger, TerminalMode};
use std::sync::Arc;
use webrtc::ice_transport::ice_server::RTCIceServer;
#[tokio::main]
pub async fn main() {
TermLogger::init(LevelFilter::Info, Default::default(), TerminalMode::Mixed, ColorChoice::Auto).unwrap();
// Define your STUN and TURN servers here
let ice_servers = vec![RTCIceServer {
urls: vec!["stun:stun.cloudflare.com:3478".to_owned()],
..Default::default()
}];
// Define your data channel handler
struct MyDataChannelHandler {}
impl DataChannelHandler for MyDataChannelHandler {
fn handle_data_channel_open(&self) {
warn!("Data channel opened!");
}
fn handle_data_channel_message(&self, message: String) {
warn!("Data channel message received: {:?}", message);
}
}
// Start the connection
let host = EzRTCHost::new(
"wss://your-signaling-server.com/one-to-many".to_string(),
"random_session_id".to_string(),
ice_servers,
Arc::new(Box::new(MyDataChannelHandler {})),
)
.await;
// Log connected clients number every 5 seconds
loop {
info!("Connected clients: {:?}", host.peer_connections.lock().unwrap().len());
tokio::time::sleep(std::time::Duration::from_secs(5)).await;
}
}
依赖项
~33–47MB
~888K SLoC