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
154 每月下载量
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 的客户端接口通过工厂方法,如 get
、post
、delete
等,使发送典型的 HTTP 方法(如 GET
、POST
、DELETE
)变得容易。这些方法需要一个可以转换成 hyper::Uri
的参数。
由于 Unix 域套接字不使用解析为 IP 地址和网络端口的域名,因此您不能使用标准的 URL 字符串。相反,使用 hyperlocal_with_windows::Uri
,它代表域套接字的文件路径和资源 URI 路径及查询字符串。
Doug Tangren (softprops) 2015-2024
依赖关系
~4–14MB
~157K SLoC