3个版本
1.8.0-beta.3 | 2024年6月1日 |
---|---|
1.8.0-beta.2 | 2024年5月31日 |
在WebSocket中排名第61
每月下载69次
68KB
1.5K SLoC
nng-c
对nng的高阶绑定。
版本与C库对应
功能
http
- 启用http传输tls
- 启用TLS传输websocket
- 启用websocket传输。隐含http
功能。log
- 通过log crate启用日志记录
用法
客户端和服务器通信的基本示例
use nng_c::{options, Socket, Message, ErrorCode};
use core::time;
//Feel free to append zero char to avoid unnecessary allocations
const ADDR: &str = "ipc://nng-c-example\0";
const REQ_TIMEOUT: options::Req = options::Req {
resend_time: Some(time::Duration::from_millis(50)),
resend_tick: Some(time::Duration::from_millis(1)),
};
fn server() -> Result<(), ErrorCode> {
let server = Socket::rep0()?;
server.listen(ADDR.into()).expect("listen");
loop {
let msg = server.recv_msg()?;
let body = msg.body();
let msg = core::str::from_utf8(body).expect("utf-8 bytes");
match msg {
"quit" => break Ok(()),
other => {
println!("Received bytes(len={})={:?}", other.len(), other);
}
}
}
}
let server = std::thread::spawn(server);
//Wait for thread to spin
std::thread::sleep(time::Duration::from_millis(10));
let client = Socket::req0().expect("Create client");
client.set_opt(REQ_TIMEOUT).expect("Set options");
client.connect(ADDR.into()).expect("connect");
let mut msg = Message::new().expect("create message");
msg.append("ping".as_bytes()).expect("Input bytes");
client.send_msg(msg).expect("send message");
let mut msg = Message::new().expect("create message");
msg.append("quit".as_bytes()).expect("Input bytes");
client.send_msg(msg).expect("send quit");
server.join().expect("Finish server successfully");
依赖项
~7.5MB
~176K SLoC