All Projects → nwtgck → Piping Server

nwtgck / Piping Server

Licence: mit
Infinitely transfer between every device over pure HTTP with pipes or browsers

Programming Languages

typescript
32286 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to Piping Server

Croc
Easily and securely send things from one computer to another 🐊 📦
Stars: ✭ 17,834 (+665.41%)
Mutual labels:  transfer, data-transfer
Tlog
Terminal I/O logger
Stars: ✭ 170 (-92.7%)
Mutual labels:  stream
Haproxy
HAProxy Load Balancer's development branch (mirror of git.haproxy.org)
Stars: ✭ 2,463 (+5.71%)
Mutual labels:  http2
Rxjava2 Extras
Utilities for use with RxJava 2
Stars: ✭ 167 (-92.83%)
Mutual labels:  stream
Fpgo
Monad, Functional Programming features for Golang
Stars: ✭ 165 (-92.92%)
Mutual labels:  stream
System Tar And Restore
Backup and Restore your system using tar or Transfer it with rsync
Stars: ✭ 170 (-92.7%)
Mutual labels:  transfer
Rsocket Java
Java implementation of RSocket
Stars: ✭ 2,099 (-9.91%)
Mutual labels:  stream
Scramjet
Simple yet powerful live data computation framework
Stars: ✭ 171 (-92.66%)
Mutual labels:  stream
Magicalexoplayer
The Easiest Way To Play/Stream Video And Audio Using Google ExoPlayer In Your Android Application
Stars: ✭ 171 (-92.66%)
Mutual labels:  stream
Multiqueue
A fast mpmc queue with broadcast capabilities
Stars: ✭ 167 (-92.83%)
Mutual labels:  stream
Flinkx
Based on Apache Flink. support data synchronization/integration and streaming SQL computation.
Stars: ✭ 2,651 (+13.78%)
Mutual labels:  data-transfer
Http2 Explained
A detailed document explaining and documenting HTTP/2, the successor to the widely popular HTTP/1.1 protocol
Stars: ✭ 2,060 (-11.59%)
Mutual labels:  http2
Wgsd
A CoreDNS plugin that provides WireGuard peer information via DNS-SD semantics
Stars: ✭ 169 (-92.75%)
Mutual labels:  nat-traversal
Rapidbay
Self-hosted torrent video streaming service compatible with Chromecast and AppleTV deployable in the cloud
Stars: ✭ 163 (-93%)
Mutual labels:  stream
Glob Stream
A Readable Stream interface over node-glob.
Stars: ✭ 172 (-92.62%)
Mutual labels:  stream
Speedment
Speedment is a Stream ORM Java Toolkit and Runtime
Stars: ✭ 1,978 (-15.11%)
Mutual labels:  stream
Into Stream
Convert a string/promise/array/iterable/asynciterable/buffer/typedarray/arraybuffer/object into a stream
Stars: ✭ 167 (-92.83%)
Mutual labels:  stream
Stream Site
Rachni - nginx RTMP streaming front end
Stars: ✭ 172 (-92.62%)
Mutual labels:  stream
Quic.net
A .NET C# Implementation of QUIC protocol - Google's experimental transport layer.
Stars: ✭ 173 (-92.58%)
Mutual labels:  stream
Rxdownloader
Demo of Downloading Songs/Images through Android Download Manager using RxJava2
Stars: ✭ 166 (-92.88%)
Mutual labels:  stream

Piping Server

npm CodeFactor CircleCI Build status GitHub Actions Docker Automated build Dependabot Status

Infinitely transfer between every device over HTTP/HTTPS
Piping Server hello

Transfer

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 or /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.

You can also use Web UI like https://ppng.io on your browser. A more modern UI is found in https://piping-ui.org, which supports E2E encryption.

Stream

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 seq inf.

infnite text stream

Ideas

Piping Server is designed based on the ideas as follows.

  • Infinite transfer: You can transfer any kind of data infinitely on a stream. Streams are very efficient in terms of both time and space.
  • Zero installation: All you need is to have either a Web browser or curl, which are widely pre-installed. You do not need to install any extra software.
  • Simpleness: Making simple makes it more secure.
  • Storageless: The server makes transfer more secure since the server never stores your data.
  • Purity: The server streams over pure HTTP, which makes integration easier with other softwares.
  • Engineer friendly: Also designed for Unix/Linux users, who use pipes, not only for Web browser users.

Applications

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.

Power of HTTP

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.

The power of HTTP

Engineer-friendly help

Get help and version only with curl.

curl https://ppng.io/help
curl https://ppng.io/version

Transfer to multiple receivers

You can transfer to multiple receivers. In the demo below, query parameter ?n=3 is specified to allow three receivers.

Piping Server multiple transfer

Public servers

Here are public Piping Servers.

Self-host on Docker

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

Self-host on free services

Here are easier ways to own your Piping Server.

See "Ecosystem around Piping Server · nwtgck/piping-server Wiki" to find more about self-hosting.

Headers passed from sender to receivers

Here are headers passed to receivers.

  • Content-Type
  • Content-Length
  • Content-Disposition
  • X-Piping: custom header whose value is freely specified by the sender

Server options

Here is available CLI options by piping-server --help.

Options:
  --help          Show help                                            [boolean]
  --version       Show version number                                  [boolean]
  --http-port     Port of HTTP server                            [default: 8080]
  --enable-https  Enable HTTPS                        [boolean] [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 written in Rust

Piping Server is also developed in Rust.
https://github.com/nwtgck/piping-server-rust

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].