| Crates.io | hrelay |
| lib.rs | hrelay |
| version | 0.4.2 |
| created_at | 2025-07-31 10:54:17.451998+00 |
| updated_at | 2025-09-19 10:24:19.061225+00 |
| description | A http relayer |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1774904 |
| size | 54,326 |
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;
}
};
}
}