Hi all! I'm very new to the DEV community. Today, I'd like to introduce data stream transfer between almost every device over HTTP/HTTPS made for use with Unix Pipe and also for browser!
What do I want to solve?
We sometimes want to transfer data between Mac, Windows, Linux, Unix, iPhone, Android... Although we have AirDrop, Google Drive, Dropbox, Slack, WhatsApp, Skype, netcat, ssh or etc, we need to
Find a common service used by both sender and receiver
Install additional GUI software
Sign up some service
Solve NAT traversal
In addition, almost existing data transfer services are not CUI-friendly or not GUI-friendly.
So, I made a solution to the problems above. The system allows you to
Transfer data with almost every device
Use it without additional installation
Use it with Unix/Linux Pipe and it's engineer-friendly
Actual Usages
I'd like to introduce how to use the system I made.
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.
# install
npm install -g piping-server
# run
piping-server --http-port=8888
Possibility of Data Transfer over HTTP
I'm conducting an experiment to reveal how many data can be transferred over HTTP.
I started the experiment 55 days and 7 hours ago and over 1000 terabyte data were transferred.
The method of the experiment is as follows.
Infinitely send: cat /dev/urandom | curl -T - localhost:8888/rand
Infinitely discard: curl localhost:8888/rand > /dev/null
Transfer Speed Compared with Go
Here is a simple comparison in transfer speed between TypeScript/Node.js and Go implementations. As a result of the videos, there seem to be almost no differences.