13 unstable releases (3 breaking)

Uses new Rust 2024

0.4.5 Oct 15, 2025
0.4.4 Oct 14, 2025
0.4.2 Sep 19, 2025
0.4.0 Aug 26, 2025
0.1.0 Jul 31, 2025

#1 in #relayer

Download history 132/week @ 2025-07-30 1/week @ 2025-08-06 245/week @ 2025-08-13 548/week @ 2025-08-20 53/week @ 2025-08-27 4/week @ 2025-09-03 264/week @ 2025-09-17 10/week @ 2025-09-24 16/week @ 2025-10-01 287/week @ 2025-10-08 271/week @ 2025-10-15

587 downloads per month
Used in hrelayer

MIT license

18KB
380 lines

http1, http2的网络转发器

// http1转发器
async fn run() -> Result<(), net_relay::Error> {
    let mut relay = hrelay::http1::Relay::build(|b| {
        b.bind("0.0.0.0:3001")
            .relay_fn(hrelay::http1::default_relay_fn)
    })
        .map(|r| r)?;

    // 连接池集合
    let pools = relay.pools();

    tokio::spawn(async move {
        tokio::time::sleep(Duration::from_secs(10)).await;
        let p =
            http_pool::http1::Pool::new("*".to_string(), Arc::new(net_pool::CHStrategy::default()));
        pools.add_pool(p);
        pools.add_backend("*", net_pool::Address::from("www.baidu.com"));
    });

    loop {
        tokio::select! {
            res = relay.run() => {
                return res;
            }
        };
    }
}

// http2转发器
async fn run() -> Result<(), net_relay::Error> {
    let mut relay = hrelay::http2::Relay::build(|b| {
        b.bind("0.0.0.0:3001")
            .relay_fn(hrelay::http2::default_relay_fn)
    })
    .map(|r| r)?;

    let pools = relay.pools();

    tokio::spawn(async move {
        tokio::time::sleep(Duration::from_secs(10)).await;
        let p = http_pool::http2::Pool::new(
            "*".to_string(),
            Arc::new(net_pool::CHStrategy::default()),
            Some(20),
        );
        pools.add_pool(p);
        pools.add_backend("*", net_pool::Address::from("127.0.0.1:30097"));
    });

    loop {
        tokio::select! {
            res = relay.run() => {
                return res;
            }
        };
    }
}

Dependencies

~12–23MB
~371K SLoC