use rustzmq2::prelude::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut server = rustzmq2::PairSocket::new();
server.bind("tcp://127.0.0.1:5580").await?;
let client_task = tokio::spawn(async {
let mut client = rustzmq2::PairSocket::new();
client.connect("tcp://127.0.0.1:5580").await.unwrap();
for i in 0..5u32 {
let msg = format!("ping {i}");
client.send(msg).await.unwrap();
let reply: String = client.recv().await.unwrap().try_into().unwrap();
println!("client got: {reply}");
}
});
for _ in 0..5 {
let msg: String = server.recv().await?.try_into()?;
println!("server got: {msg}");
server.send(msg.replace("ping", "pong")).await?;
}
client_task.await?;
Ok(())
}