hyperlocal icon indicating copy to clipboard operation
hyperlocal copied to clipboard

Work greetly with axum, but not required in hyper 1.0

Open danielecr opened this issue 1 year ago • 2 comments

I do not know why I spent all this morning for just open a unix socket, anyway, the full example ported from TcpListener to UnixListener:

use bytes::Bytes;
use http_body_util::Full;

use hyper::server::conn::http1;
use hyper::service::service_fn;
use hyper::{Request, Response};
use tokio::net::{TcpListener,UnixListener};
use hyper_util::rt::TokioIo;

use std::convert::Infallible;


async fn hello(_: Request<hyper::body::Incoming>) -> Result<Response<Full<Bytes>>, Infallible> {
    Ok(Response::new(Full::new(Bytes::from("Hello, World!"))))
}

#[tokio::main]
async fn main() {
    let socketpath = "/tmp/notexistent.sock";
    let path = std::path::Path::new(socketpath);

    if path.exists() {
        tokio::fs::remove_file(path).await.expect("Could not remove old socket!");
    }

    let listener = UnixListener::bind(path).unwrap();

    //let listener = TcpListener::bind(addr).await.unwrap();
    loop {
        let (stream, _) = listener.accept().await.unwrap();
        let io = TokioIo::new(stream);
        
        tokio::task::spawn(async move {
            if let Err(err) = // http1::Builder::new()
            http1::Builder::new().serve_connection(
                io,
                service_fn(hello),
            )
            .await
            {
                println!("Failed to serve connection: {:?}", err);
            }
        });
    }
}

try with:

curl --no-buffer -XGET --unix-socket /tmp/notexistent.sock http://domain/saysomething

I refer to the example in https://hyper.rs/guides/1/server/hello-world/

danielecr avatar Nov 23 '23 11:11 danielecr

https://github.com/hyperium/hyper/pull/3440 let's see

danielecr avatar Nov 23 '23 11:11 danielecr

fwiw there's a client+server example here: https://github.com/tokio-rs/axum/blob/main/examples/unix-domain-socket/src/main.rs

bheesham avatar Dec 19 '23 02:12 bheesham