腾讯 网站建设,北京商场招商信息,做网站网站牟利200万判刑,nas wordpress将好的文章转载本文尝试下rust 的tauri 桌面运用 原因在于体积小
1、pjsip 提供了rust 接口官方的 rust demo 没编译出来 在git找了个sip-phone-rs-master https://github.com/Charles-Schleich/sip-phone-rs
可以自己编译下pjsip lib库替换该项目的lib
2、创建一个tauri demo 引用
[depe…本文尝试下rust 的tauri 桌面运用 原因在于体积小
1、pjsip 提供了rust 接口官方的 rust demo 没编译出来 在git找了个sip-phone-rs-master https://github.com/Charles-Schleich/sip-phone-rs
可以自己编译下pjsip lib库替换该项目的lib
2、创建一个tauri demo 引用
[dependencies]
tauri { version 1, features [shell-open] }
serde { version 1, features [derive] }
serde_json 1
te-telephony-rs {path../../sip-phone-rs-master} 3.稍微修改下sip-phone-rs项目加了消息回调用到以下
pj_str_t 转CString 找了很久r let c_str unsafe { CString::from_vec_unchecked(std::slice::from_raw_parts(ci.state_text .ptr as *const u8, ci.state_text .slen as usize) .to_vec()) };
引用lazy_static 然后做方法消息回调
#[derive(Debug)]
pub struct MyChannel{ pub sr:mpsc::SenderString, pub rr:mpsc::ReceiverString
}
impl MyChannel { pub fn new( sr:mpsc::SenderString, rr:mpsc::ReceiverString)-MyChannel{ MyChannel{ sr,rr } }
}
unsafe impl Sync for MyChannel { }
lazy_static! { pub static ref GLOBAL_MYCHANNEL: ArcMyChannel { let ( sr,rr) mpsc::channel(); Arc::new( MyChannel::new(sr, rr) ) };
用法 GLOBAL_MYCHANNEL.sr.send( format!(reg{}{},renew,code) );
最后显示到页面 pub fn xunmsg(app: AppHandleWry) { let main_window app.get_window(main).unwrap(); let main_window_clone main_window.clone(); thread::spawn(move || { let cloneChannel GLOBAL_MYCHANNEL.clone(); loop{ let zcloneChannel.rr.try_recv().unwrap_or_default(); if z.len()1{ println!(get:{:?},z); main_window_clone.emit(msg_callstate, Payload { message: z }).unwrap(); } sleep(Duration::from_secs(1)); } });
}
最后效果7.54M 好小 比包括一个google 内核小的多 sip客户端和freeswitch 需求可到https://item.taobao.com/item.htm?id653611115230