我有一个字符串消息列表,我想通过打开它们之间的TCP连接来发送到另一台机器。我不想使用现有的解决方案,例如mpsc :: channel。
我看到了一些示例,这些示例说明了如何使用间隔和民意调查来在Tokio中完成相同的操作。但是,假设我们要尽快发送消息,我们该怎么做?我还尝试使用tokio :: spawn并循环遍历整个队列以写入所需的消息,但始终最终会从套接字获取错误(无法移动...。)
let done = listener
.incoming()
.for_each(move |socket| {
let server_queue = _cqueue.clone();
let (reader, mut writer) = socket.split();
let sender = Interval::new_interval(std::time::Duration::from_millis(1))
.for_each(move |_| {
writer
.poll_write(server_queue.pull().borrow())
.map_err(|_| {
tokio::timer::Error::shutdown();
})
.unwrap();
return Ok(());
})
.map_err(|e| println!("{}", e));
;
tokio::spawn(sender);
return Ok(());
})
.map_err(|e| println!("Future_error {}", e));
tokio::run(done);
使用此方法,我可以在用户端获取消息,但是我感觉间隔使我们放慢了速度,因为我们在发送其他消息之前等待。还有另一种不用间隔就可以达到类似目的的方法吗?