You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法在Cloudflare Worker的Socket中使用BufReader?

解决Cloudflare Worker Rust中Socket无法与BufReader配合的问题

问题原因

workers-rs库中Socket对AsyncRead/AsyncWrite trait的实现默认不启用,需要通过feature flag开启对应功能。你看到的源码实现确实存在,但只有在启用io-util feature时才会被编译进项目。

解决方案

1. 修改Cargo.toml启用feature

在项目依赖中,给worker添加io-util feature:

[dependencies]
worker = { version = "0.0.26", features = ["io-util"] }
# 替换为你实际使用的worker版本号

2. 验证修改后的代码

原代码逻辑无需改动,依赖配置正确后即可正常编译:

use worker::*;
use futures::io::BufReader;

#[event(fetch)]
async fn fetch(
    _req: Request,
    _env: Env,
    _ctx: Context,
) -> Result<Response> {
    console_error!("Start 1");
    console_error_panic_hook::set_once();
    // Connect using Worker Socket
    let soc = Socket::builder()
        .connect("example.com", 8080)?;

    let mut buf_reader = BufReader::new(soc);
    Response::ok("Hello World!")
}

补充说明

workers-rs为了最小化编译产物,将非核心功能放在可选feature中,io-util包含了Socket的异步IO trait实现。启用该feature后,编译器就能识别Socket对AsyncRead的实现,从而可以配合futures::io::BufReader使用。

内容的提问来源于stack exchange,提问作者lopass

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:17:14