How to set tcp socket keepalive in tokio?

262 Views Asked by At

Noticed that related API deprecated from v0.1.12

https://docs.rs/tokio/0.1.12/tokio/net/struct.TcpStream.html

pub fn set_keepalive(&self, keepalive: Option<Duration>) -> Result<(), Error>

In newest version, https://docs.rs/tokio/1.21.2/tokio/net/struct.TcpStream.html#method.set_keepalive

How can I set it?

1

There are 1 best solutions below

0
progquester On BEST ANSWER
use socket2::{SockRef, TcpKeepalive};
...
        info!("connecting to {addr}");
        let tcp = TcpStream::connect(&addr).await?;
        info!("tcp connected to {addr}");
        let ka = TcpKeepalive::new().with_time(std::time::Duration::from_secs(30));
        let sf = SockRef::from(&tcp);
        sf.set_tcp_keepalive(&ka)?;
...