问题标签 [rust-tokio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
637 浏览

rust - 如何在 Rust Tokio 任务中无限期地读取无界通道?

我认为这.for_each()可以解决问题,但它只返回通道中的第一个(未来)项目,然后返回,如果通道是空的。.for_each()像在非 Tokio/future 上下文中那样无限期地读取任务中的频道的方法是什么?

0 投票
1 回答
174 浏览

rust - 如何从 tokio-proto 连接握手中检索信息?

我正在弄清楚如何使用tokio-proto板条箱,特别是在建立连接时进行的握手。我从官方文档中得到了这个例子:

但是官方文档只提到了没有状态信息的握手。有没有一种通用的方法可以从握手中检索和存储有用的数据?

例如,如果在握手期间(在建立连接后的第一条消息中)服务器发送了一些稍后应该由客户端使用的密钥,那么ClientProto实现应该如何查看该密钥?它应该存储在哪里?

0 投票
0 回答
1974 浏览

file - 如何为文件句柄获取 tokio-io 的 async_read

我想从文件句柄中流式传输行,但我不知道如何满足 aFile具有的特征界限async_read

错误:

查看AsyncRead,似乎 aFile没有标记它具有非阻塞读取。我需要降级File到 araw_fd然后在那里做点什么吗?

0 投票
1 回答
307 浏览

rust - 如何创建一个 tokio 专用传输来覆盖默认的刻度实现?

我正在尝试在传输中使用非默认tick()方法编写流式传输流水线服务器。我认为这会做到这一点:

但是,尝试构建此文件会产生以下结果:

我原以为由于“专业化”,它的具体性质GearmanFramed将允许我实现该Transport特征,但这仍然与默认值相冲突,此处为:

0 投票
1 回答
2103 浏览

multithreading - 如何从另一个线程使用 hyper::client?

我有多个线程执行一些繁重的操作,我需要在工作中使用客户端。我使用 Hyper v0.11 作为 HTTP 客户端,并且我想重用连接,因此我需要共享相同hyper::Client的连接以保持打开连接(在keep-alive模式下)。

客户端在线程之间不可共享(它不实现Syncor Send)。这是我尝试做的代码的一个小片段:

此代码无法编译:

有没有办法从不同的线程或其他方法重用同一个客户端?

0 投票
1 回答
2182 浏览

asynchronous - 使用异步(tokio)rust-websocket 在客户端之间共享可变状态

我正在使用 rust-websocket 及其基于 Tokio 的异步系​​统在 Rust 中编写 websocket 服务器。我可以很好地为客户服务,但是,我不知道如何在客户之间共享可变状态。这是一些演示此问题的(部分)代码:

此代码错误:

在尝试编译器的建议时,我得到了这个:

我还尝试将状态包装在 a 中RefCell(在状态本身之后创建RefCell右侧),但是,编译器给出了类似的移动错误,因为它试图将 a 移动RefCell到创建客户端上下文的闭包中。

0 投票
2 回答
1429 浏览

rust - 使用 Hyper HTTP 客户端实现重试

我正在尝试在使用Hyper v0.11构建的客户端中实现重试,但我找不到将请求重用于不同尝试的方法:

这是编译错误:

错误很明显,但我不知道如何解决它。

0 投票
0 回答
75 浏览

rust - 创建新的 Tokio TcpServer 时使用的 `||` 运算符是什么?

我一直在尝试使用Tokio 库来玩 TCP 服务器和客户端。服务器几乎总是这样构建的:

我很想知道||运算符的作用以及在此表达式中如何使用它?

以下是一些基于 Tokio MiniHTTP 的完整服务器示例

0 投票
0 回答
1064 浏览

rust - 从 futures::Stream 转发到 futures::Sink

我目前正试图围绕 tokio & futures 原语和生态系统展开思考。

我从tk-http websockets 示例开始做一些工作,并希望对接收到的数据进行更多处理,而不是回显它。第一步似乎是用某种循环替换 .forward() 调用。

在我看来,这stream.forward(sink)相当于stream.fold(sink, |out_, item| { out.send(item).and_then(Sink::flush) }),但是这样做(提交)根本不会轮询流。但是,与 Tokio 示例相同的更改可以正常工作(示例)。

此外,似乎首先在接收器上输出某些东西会使转发工作正常(提交),所以也许接收器由于某种原因没有在事件循环中注册,直到发送发生?我错过了什么?这可能是 tk-http 中的错误吗?

0 投票
1 回答
439 浏览

rust - 在 Iron 和 Hyper 中重用 hyper::client 和 tokio_core

我在 Iron 处理程序中发出客户请求。如何重复使用 TokioCore和 Hyper 的Client?我正在使用超 0.11.0 和 tokio-core 0.1。