rvoip 是一个功能全面的纯 Rust 实现的 SIP/VoIP 协议栈,旨在大规模处理、路由和管理电话呼叫。它从底层开始采用现代 Rust 实践构建,为从简单的软电话到企业呼叫中心等各种 VoIP 应用提供了一个强大、高效且安全的基础架构。该库旨在为构建 SIP 客户端和服务器奠定基础,未来有望成为 FreeSWITCH 和 Asterisk 等开源系统以及 Avaya 和 Cisco 等商业系统的替代方案。

rvoip Alpha 版本最近发布,API 正在快速迭代。rvoip 团队表示随着他们向生产环境迈进,库将发生重大变化,但核心架构和设计原则是稳定的。其目标是使该库具备企业 VoIP 部署的生产就绪性。
快速入门
安装
[dependencies]
rvoip = { version = "0.1", features = ["full"] }
tokio = { version = "1.0", features = ["full"] }
30 秒创建 SIP 服务器
use rvoip::session_core::prelude::*;
#[tokio::main]
async fn main() -> Result<()> {
let session_manager = SessionManagerBuilder::new()
.with_sip_port(5060)
.build().await?;
println!("✅ SIP server running on port 5060");
tokio::signal::ctrl_c().await?;
Ok(())
}
拨打您的第一个电话
use rvoip::client_core::{ClientConfig, ClientManager, MediaConfig};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let config = ClientConfig::new()
.with_sip_addr("127.0.0.1:5060".parse()?)
.with_media_addr("127.0.0.1:20000".parse()?)
.with_user_agent("MyApp/1.0".to_string())
.with_media(MediaConfig {
preferred_codecs: vec!["PCMU".to_string(), "PCMA".to_string()],
..Default::default()
});
let client = ClientManager::new(config).await?;
client.start().await?;
let call_id = client.make_call(
"sip:alice@127.0.0.1".to_string(),
"sip:bob@example.com".to_string(),
None
).await?;
println!("📞 Call initiated to bob@example.com");
Ok(())
}
企业呼叫中心
use rvoip::call_engine::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut config = CallCenterConfig::default();
config.general.local_signaling_addr = "0.0.0.0:5060".parse()?;
config.general.domain = "127.0.0.1".to_string();
let mut server = CallCenterServerBuilder::new()
.with_config(config)
.with_database_path(":memory:".to_string())
.build()
.await?;
server.start().await?;
println!("🏢 Call Center Server starting...");
server.run().await?;
Ok(())
}
rvoip 库结构
rvoip 由 9 个核心模块组成,每个模块在 VoIP 协议栈中都承担着特定的职责。架构如下:
┌─────────────────────────────────────────────────────────────┐
│ Application Layer │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ call-engine │ │ client-core │ │
│ │ (Call Center) │ │ (SIP Client) │ │
│ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Session & Coordination Layer │
│ ┌─────────────────┐ │
│ │ session-core │ │
│ │ (Session Mgmt) │ │
│ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Protocol & Processing Layer │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────┐ │
│ │ dialog-core │ │ media-core │ │transaction │ │
│ │ (SIP Dialogs) │ │ (Audio Process) │ │ -core │ │
│ └─────────────────┘ └─────────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Transport & Media Layer │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ sip-transport │ │ rtp-core │ │
│ │ (SIP Transport) │ │ (RTP/SRTP) │ │
│ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Foundation Layer │
│ ┌─────────────────┐ │
│ │ sip-core │ │
│ │ (SIP Protocol) │ │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
关于 rvoip 更多详细信息请访问:https://github.com/eisenzopf/rvoip
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/64028.html