3 个版本 (破坏性更改)

0.3.0 2020年5月10日
0.2.0 2020年5月10日
0.1.0 2020年5月10日

#161 in #handler

MIT 许可证

19KB
415

异步流代理处理程序。

此库允许使用 Rust 编写反向代理。它基于 async-std 构建,并使用 async-uninet,这使得可以统一处理异步 TCP & Unix 流。

示例

程序

let address = SocketAddr::from_str("127.0.0.1:4444").await.unwrap(); // or `unix:`
let listener = Listener::bind(&address).await.unwrap();

while let Some(stream) = listener.incoming().next().await {
    let stream = stream.unwrap();

    task::spawn(async move {
        let mut router = Router::new(stream);
        let mut router = Router::new(stream);
        router.parse_request().await.unwrap();
        router.set_request_header("Host", "jsonplaceholder.typicode.com:80"); // override header
        router.relay_request().await.unwrap();
        router.parse_response().await.unwrap();
        router.write_response_header("Status", "fast"); // override header
        router.relay_response().await.unwrap();
    })
}

执行

$ curl -N \
  -H "Host: typicode" \
  -H "Content-Type: application/json" \
  https://127.0.0.1:4444/posts

依赖项

~5–14MB
~168K SLoC