#unix-socket #routerify #unix #hyper #hyperlocal #http

routerify-unixsocket

使用routerify结合hyperlocal添加本地Unix套接字支持

3个版本 (1个稳定版)

3.0.0 2022年1月15日
0.1.1 2021年3月20日
0.1.0 2021年3月20日

1126HTTP服务器

Download history 12/week @ 2024-03-19 65/week @ 2024-03-26 33/week @ 2024-04-02 15/week @ 2024-04-23 10/week @ 2024-04-30 15/week @ 2024-05-07 21/week @ 2024-05-14 17/week @ 2024-05-21 11/week @ 2024-05-28 26/week @ 2024-06-04 25/week @ 2024-06-11 257/week @ 2024-06-18 129/week @ 2024-06-25 18/week @ 2024-07-02

430 每月下载量
用于 minidsp-daemon

MIT/Apache

14KB
142

routerify-unixsocket

Crates.io Docs.rs CI Coverage Status

Routerify <> Hyperlocal

使用方法

使用routerify服务Unix套接字

基本用法是通过将RouterService替换为UnixRouterService来实现的,后者会适配请求以与routerify的RequestService兼容。

由于routerify需要一个IP SocketAddr,所以使用回环地址127.0.0.1和端口号0作为占位符。为了访问Unix套接字的对端地址和对端凭证,UnixRequestExt扩展特质向请求对象添加了方法。

示例

use hyper::{Body, Response, Server};
use hyperlocal::UnixServerExt;
use routerify::{Error, Router};
use routerify_unixsocket::{UnixRequestExt, UnixRouterService};
use std::{fs, path::Path};

#[tokio::main]
async fn main() {
    let path = Path::new("/tmp/hyperlocal.sock");
    if path.exists() {
        fs::remove_file(path).unwrap();
    }

    let router: Router<Body, Error> = Router::builder()
        .get("/", |req| async move {
            let s = format!("You are: {:?}", req.unix_peer_cred());
            Ok(Response::new(Body::from(s)))
        })
        .build()
        .unwrap();

    let service = UnixRouterService::new(router).unwrap();
        Server::bind_unix(path)
            .unwrap()
            .serve(service)
            .await
            .unwrap()
}

许可证

许可协议为以下之一

任选其一。

贡献

除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据Apache-2.0许可证定义,应按上述方式双许可,无需任何额外的条款或条件。

依赖项

~8–19MB
~241K SLoC