Piping Server is simple. You can transfer as follows.
# Send echo 'hello, world' | curl -T - https://ppng.io/hello
# Get curl https://ppng.io/hello > hello.txt
Piping Server transfers data to
POST /hello or
PUT /hello into
GET /hello. The path
/hello can be anything such as
/mypath/123/. A sender and receivers who specify the same path can transfer. Both the sender and the recipient can start the transfer first. The first one waits for the other.
The most important thing is that the data are streamed. This means that you can transfer any data infinitely. The demo below transfers an infinite text stream with
Piping Server is designed based on the ideas as follows.
curl, which are widely pre-installed. You do not need to install any extra software.
Any data such as text streams, video streams and protocols can be streamed over Piping Server. Here are applications that fully use the power of pure HTTP.
See: "The Power of Pure HTTP – screen share, real-time messaging, SSH and VNC"
|Text stream chat||Screen share||Drawing share|
|E2E encryption file transfer||SSH on Web browser||VNC on Web browser|
The most important thing is that Piping Server stays simple. The applications use Piping Server as a core of data communication. It transfers data to
POST /thepath into
GET /thepath streamingly. The stream makes real-time communications over every device possible.
See "Ecosystem around Piping Server · nwtgck/piping-server Wiki" to find more about softwares using Piping Server.
In my experiment, Piping Server transferred 1,110TB (≈ 1PB) in a single HTTP request for 64 days and 2 hours at least. This means that it can transfer huge data and keep a request for about 2 months.
Get help and version only with
You can transfer to multiple receivers. In the demo below, query parameter
?n=3 is specified to allow three receivers.
Here are public Piping Servers.
Run a Piping Server on http://localhost:8080 as follows.
docker run -p 8080:8080 nwtgck/piping-server
Run a server in background and it automatically always restarts.
docker run -p 8080:8080 -d --restart=always nwtgck/piping-server
Here are easier ways to own your Piping Server.
See "Ecosystem around Piping Server · nwtgck/piping-server Wiki" to find more about self-hosting.
Here is available CLI options by
Options: --help Show help [boolean] --version Show version number [boolean] --http-port Port of HTTP server [default: 8080] --enable-https Enable HTTPS [default: false] --https-port Port of HTTPS server [number] --key-path Private key path [string] --crt-path Certification path [string]
Click the button above to deploy a Piping Server to Heroku.
Piping Server is also developed in Rust.