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 router = relay.router();
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()));
router.add_pool(p);
router.add_backend("/", net_pool::Address::from("www.baidu.com"));
});
loop {
tokio::select! {
res = relay.run() => {
return res;
}
};
}
}
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 router = relay.router();
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),
);
router.add_pool(p);
router.add_backend("/", net_pool::Address::from("127.0.0.1:30097"));
});
loop {
tokio::select! {
res = relay.run() => {
return res;
}
};
}
}