终端 A — 发送端
$ curl -T report.pdf \
…/pipe/my-report
[信息] 等待接收端...
[信息] 正在流传到 1 个接收端...
[信息] 传输完成。
终端 B — 接收端
$ curl \
…/pipe/my-report
-o report.pdf
% Total report.pdf
100 2.4M 100 2.4M 0 0 1.8M
数据穿流而过,而非留存其中
每一个字节实时到达接收方。服务器是一根导线,不是仓库。
来源
发送端
管道服务器
零存储 · 最多 256 接收方
接收方
接收端
发送方建立连接
发送方通过 POST 或 PUT 请求任意路径。服务器等待接收方连接——最长等待 5 分钟。
字节逐字节传输
数据逐字节流经网络,零缓冲,无临时文件,无上传步骤。
接收方接入
接收方 GET 同一路径即可拉取实时流。单个发送方最多可扇出至 256 个接收方。
常见管道组合
大多数示例只需两条 curl 命令——一条发送,一条接收。
哪些内容可以流过管道
任何非可执行脚本的 Content-Type 都会原样透传。危险的 MIME 类型会被重写为 text/plain——数据不会丢失,XSS 得到防止。
application/octet-streamPUT → GET二进制文件、压缩包、图片
/api/v1/pipe/[path]text/plainPOST → GET日志、stdin、配置、stdout 流
/api/v1/pipe/[path]multipart/form-dataPOST → GET浏览器文件上传(仅首个 part)
/api/v1/pipe/[path]video/webm, video/mp4PUT → 浏览器屏幕共享、录制视频
/api/v1/pipe/[path]?videotext/event-stream (SSE)GET 观察方进度监控、速度/预计时间/状态
/api/v1/pipe/[path]?progresstext/html(已重写)PUT → GET转发前重写为 text/plain——防止 XSS,数据不丢失
/api/v1/pipe/[path]自定义请求头PUT → GETX-Hoody-Pipe、X-Piping 元数据透传
/api/v1/pipe/[path]所有接口均位于 /api/v1/pipe/[path]。方向说明谁写入、谁读取。
专为高吞吐构建
每台服务器强制执行硬性限制。容量满时返回 HTTP 429,路径过长时返回 HTTP 414。
256
单路径最大接收方数
1,000
待建立的未连接连接数
1,000
同时进行中的流数
5 分钟
触发 HTTP 408 驱逐的 TTL
1,024
路径最大字符长度
50
每路径进度观察方数
9 个接口,两条最关键的命令
POST 或 PUT 发送,GET 接收,其余均为可观测性接口。
可观测性与 UI
{count, plural, =1 {# 个端点} other {# 个端点}'}GET /health → { 状态, 活跃 Pipe 数 }
数据传输
{count, plural, =1 {# 个端点} other {# 个端点}'}POST 或 PUT 发送 · GET 接收