HTTP/HTTPS를 통한 모든 장치 간 데이터 스트리밍
무엇을 해결하고 싶습니까?
때때로 Mac, Windows, Linux, Unix, iPhone, Android 간에 데이터를 전송하고 싶습니다. AirDrop, Google Drive, Dropbox, Slack, WhatsApp, Skype,
netcat
, ssh
등이 있지만또한 거의 기존의 데이터 전송 서비스는 CUI 친화적이지 않거나 GUI 친화적이지 않습니다.
그래서 위의 문제에 대한 해결책을 만들었습니다. 시스템에서 다음을 수행할 수 있습니다.
실제 사용
제가 만든 시스템을 사용하는 방법을 소개하려고 합니다.
다음은 전송할 데모입니다
seq 100000
.보내기:
seq 100000 | curl -T - https://ppng.io/myseq
가져오기: curl https://ppng.io/myseq
다음은 100MB 파일을 전송하는 데모입니다.
보내기:
cat 100MB.dat | curl -T - https://ppng.io/mydata
가져오기: curl https://ppng.io/mydata > mydata
파이프를 사용하여 모든 데이터를 전송할 수 있습니다. 예를 들어,
압축 및 보내기:
cat myfile | gzip | curl -T ...
가져오기 및 압축 해제: curl ... | zcat > myfile
그리고암호화 및 전송:
cat myfile | openssl aes-256-cbc | curl -T ...
가져오기 및 해독: curl ... | openssl aes-256-cbc -d > myfile
그리고디렉터리(zip) 보내기:
zip -q -r - ./mydir | curl -T - https://ppng.io/mydir.zip
디렉토리 보내기(tar.gz): tar zfcp - ./mydir | curl -T - https://ppng.io/mydir.tar.gz
다음은 데이터를 브라우저로 전송하는 데모입니다.
다음은 브라우저에서 데이터를 전송하는 데모입니다.
즉, Android/iPhone/iPad...에서 다른 장치로 파일을 전송할 수 있습니다!
여러 수신기로 전송
터미널 화면 공유!
공유:
script -f >(curl -T - https://ppng.io/myscript >&/dev/null)
보기: curl https://ppng.io/myscript
(Mac에서는 script -F
대신 script -f
를 사용하십시오.)GitHub 리포지토리
프로젝트는 아래 링크에 있는 Piping Server입니다.
GitHub: https://github.com/nwtgck/piping-server
nwtgck / 배관 서버
Unix 파이프를 사용하는 모든 사람과 브라우저 사용자를 위해 설계된 순수 HTTP를 통해 모든 장치 간에 무한 전송
배관 서버
HTTP/HTTPS를 통해 모든 장치 간에 무한 전송
옮기다
배관 서버는 간단합니다. 다음과 같이 이체할 수 있습니다.
# Send
echo 'hello, world' | curl -T - https://ppng.io/hello
# Get
curl https://ppng.io/hello > hello.txt
# 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.
개울
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
.
아이디어
…
This project is written in TypeScript.
공용 서버
Here are public servers. My recommendation is https://ppng.io because it has a short name.
In my policy, you can freely run the servers. I'd like to describe how to run later.
You can get engineer-friendly help from the following.
$ curl https://ppng.io/help
<Help will be displayed here>
작동 방식
Piping Server는 Pear-to-Pear의 TURN 서버와 같다고 생각합니다. Piping Server는 NAT 통과를 해결하기 위해 데이터를 다른 장치로 릴레이합니다.
POST/PUT HTTP 요청의 본문은 GET HTTP 응답의 본문으로 전달됩니다.
파이핑 서버 실행 방법
Piping Server를 실행하는 방법에는 여러 가지가 있습니다. 하나씩 소개하려고 합니다.
헤로쿠
https://github.com/nwtgck/piping-server에서 [Heroku에 배포] 버튼을 누릅니다.
휴대용 바이너리 실행 파일
다음 명령은 파이핑 서버를 http://localhost:8888에서 실행합니다.
wget https://github.com/nwtgck/piping-server-pkg/releases/download/v0.8.7/piping-server-macos
chmod +x piping-server-macos
./piping-server-macos --http-port=8888
https://github.com/nwtgck/piping-server-pkg의 GitHub 릴리스에서 다른 플랫폼 릴리스를 찾을 수도 있습니다. 이식 가능한 실행 파일은 zeit/pkg에서 생성됩니다.
도커
A
docker run
는 파이핑 서버를 http://localhost:8888에서 실행합니다.docker run -d --restart=always -p 8888:80 nwtgck/piping-server --http-port=80
npm
다음 명령은 파이핑 서버를 http://localhost:8888에서 실행합니다.
# install
npm install -g piping-server
# run
piping-server --http-port=8888
HTTP를 통한 데이터 전송 가능성
HTTP를 통해 얼마나 많은 데이터를 전송할 수 있는지 알아보기 위해 실험을 진행하고 있습니다.
55일 7시간 전에 실험을 시작했고 1000TB 이상의 데이터가 전송되었습니다.
실험 방법은 다음과 같다.
무한 전송:
cat /dev/urandom | curl -T - localhost:8888/rand
무한 폐기: curl localhost:8888/rand > /dev/null
Go와 비교한 전송 속도
다음은 TypeScript/Node.js와 Go 구현 간의 전송 속도에 대한 간단한 비교입니다. 영상으로 보면 거의 차이가 없는 것 같습니다.
타입스크립트/Node.js:
가다:
레포고 버전: https://github.com/nwtgck/go-piping-server
일본 우편
여기 내 원래 일본어 게시물이 있습니다: https://qiita.com/nwtgck/items/78309fc529da7776cba0 .
거기에서 더 많은 정보를 얻을 수 있습니다.
읽어주셔서 대단히 감사합니다. 멋진 하루 되세요!
Reference
이 문제에 관하여(HTTP/HTTPS를 통한 모든 장치 간 데이터 스트리밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nwtgck/data-streaming-with-every-device-over-httphttps-mo4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)