4 个版本

0.9.0 2024 年 7 月 24 日
0.8.2 2023 年 1 月 23 日
0.8.1 2023 年 1 月 23 日
0.8.0 2023 年 1 月 23 日

6 in #unix-domain-socket

Download history 3/week @ 2024-04-16 4/week @ 2024-04-23 132/week @ 2024-07-23 22/week @ 2024-07-30

154 每月下载量

MIT 许可证

34KB
575

🔌 ✨

hyperlocal-with-windows

Hyper 客户端和服务器绑定,用于 Unix 域套接字,支持 Windows


Hyper 是一个可靠的 Rust HTTP 客户端和服务器工具包。 Unix 域套接字 提供了一种主机本地进程间通信机制。 hyperlocal-with-windows 在 Hyper 的接口基础上扩展和补充了构建 Unix 域套接字 HTTP 客户端和服务器的能力。

这对于在需要限制对当前主机的访问的情况下公开简单的 HTTP 接口很有用,在这种情况下,不需要打开和公开 TCP 端口。提供此类主机本地接口的 Unix 守护程序示例包括 Docker,一个进程容器管理器。

这个库是从 hyperlocal 分支出来的,增加了 Windows 支持。此项目不是 Windows 专用;它是跨平台的。Windows 支持有一个限制:当作为服务器并监听 Unix 套接字时,底层套接字可能保持打开状态,直到程序退出,即使服务器已经关闭。这通常不会影响在程序退出前监听 Unix 套接字的常规程序,但这可能对其他用例造成问题。一旦 Windows 支持添加到 hyperlocal 中,此库将被停止维护。

安装

将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
hyperlocal-with-windows = "0.9"

用法

服务器

一个典型的服务器可以通过创建一个 tokio::net::UnixListener 并使用 hyper::service::service_fn 创建一个请求/响应处理函数,在循环中接受连接,并使用 hyper::server::conn::http1::Builder::new().serve_connection()UnixStream 连接到它来构建。

hyperlocal 提供了一个扩展特质 UnixListenerExt,其中包含了上述实现的实现。

示例代码可以在 这里 找到,可以通过 cargo run --example server 来运行。

要测试服务器是否正常工作,可以使用现成的工具,如 curl

$ curl --unix-socket /tmp/hyperlocal.sock localhost

It's a Unix system. I know this.

客户端

hyperlocal 还为基于 Unix 域套接字的 HTTP 客户端提供了绑定,这是从 hyper-utils 集合中的 Client 接口。

示例代码可以在 这里 找到,可以通过 cargo run --example client 来运行。

Hyper 的客户端接口通过工厂方法,如 getpostdelete 等,使发送典型的 HTTP 方法(如 GETPOSTDELETE)变得容易。这些方法需要一个可以转换成 hyper::Uri 的参数。

由于 Unix 域套接字不使用解析为 IP 地址和网络端口的域名,因此您不能使用标准的 URL 字符串。相反,使用 hyperlocal_with_windows::Uri,它代表域套接字的文件路径和资源 URI 路径及查询字符串。


Doug Tangren (softprops) 2015-2024

依赖关系

~4–14MB
~157K SLoC