< 返回版块

lsk569937453 发表于 2023-01-22 04:18

https://github.com/tokio-rs/tokio/blob/master/examples/proxy.rs#L61

这行代码是不是针对每一个请求,都会创建一个连接。针对同一个proxy_addr,这里是不是可以用连接池?

如果可以用连接池的话,那么这个逻辑怎么修改呢?(https://github.com/tokio-rs/tokio/blob/master/examples/proxy.rs#L76)

当前是等待双向数据流传输完成就把两个writeStream关闭。现在是只想关闭其中之一。

评论区

写评论
hax10 2023-01-27 15:35

连接池能加进去,但是靠谱的连接池不是一两行代码就能写出来的事情。还是建议你调用现成的函数库,比如deadpool或mobc这种。

https://github.com/importcjj/mobc https://github.com/bikeshedder/deadpool

如果非要自己来一套连接池,可以先借鉴上面的几个工程。

按理说,初始化程序时,你要跟远程服务器建立几个TCPStream并且把这些连接对象存放在连接池的管理器里头。这样就不需要写第64行的《let (mut ro, mut wo) = outbound.split();》。反而,每次处理新的客户端请求ro和wo能直接从管理器拿出来,并且第68行的《wo.shutdown().await》要替换成一个把连接对象放回连接池的操作。

1 共 1 条评论, 1 页