Piping ChunkとPiping UIの違い
発端
@yuta0381
Piping ChunkとPiping UIの違いが分からなくなった
てっきりUIの以前の名称がChunkだったのだとずっと思ってたけど、リポジトリが別で存在しているのを発見した
両者の目的から来る違い
Piping Chunk
と
Piping UI
は目的が異なっている。
Piping Chunk
の目的は多くのストリーミング非対応デバイスへのストリーミング対応
Piping Chunk
の目的はHTTPサーバーが
Transfer-Encoding: chunked
に対応していないときや現状のブラウザのHTTPクライアントが任意のストリームをPOSTできない問題を解決する。
Transfer-Encoding: chunked
に非対応のデプロイ先は存在している。
具体的は
Heroku
、
Unubo
は
Transfer-Encoding: chunked
に非対応。
任意のストリームのPOSTに関しては「
ブラウザのJavaScriptでPOSTリクエストのBodyをストリーミングしたいが、Chromeも未対応みたい
」。
データストリームを一定区切りチャンクに分けて
Piping Server
経由で送信し、それをチャンクごとに受信する実装になっている。そのため
Piping Chunk
の送受信を
curlコマンド
で再現しようとするのをいちいち毎回ターミナルでやるような感じではない。
Piping Chunk
と互換性のある
専用CLI
が必要になることが想定される。
Piping UI
の目的は純粋に
Piping Server
を使うこと
Piping UI
の目的は
curlコマンド
などのCLIとの親和性を保ちつつ、「
Piping Serverの質素なWeb UI
」の機能的/
UI/UX
的な上位互換を提供すること。
その完全な互換性のため、送信者が
curlコマンド
を使って送ったものを受信者が
Piping UI
を受け取ることができるし、またその逆に送信者が
Piping UI
を使って送り、受信者がコマンドで受け取ることもできる。
コマンドに限らず、
「
Piping Serverの質素なWeb UI
」
「
Microsoft FlowでAndroid/iPhoneからPiping Server経由でテキストを転送する
」など純粋な
Piping Server
の利用をする。
などの純粋な
Piping Server
の利用と相性が良い。
また
Piping UI
のコマンドとの互換性の高さのおかげで
E2E暗号化
もやりやすくなる。
コマンドでは
gpg
コマンドで、以下のようにすごくシンプルに
E2E暗号化
での転送が行える。
送信:
$ export GPG_TTY=$(tty)
$ echo 'hello!' | gpg -c | curl -T -
https://ppng.io/mypath
受信:
$ curl
https://ppng.io/mypath
| gpg
Piping UI
はこの安全性を
gpgコマンド
を使わない一般ユーザーも手軽にブラウザ上で使えるようにする。上記の
gpgコマンド
と互換性がある暗号化をブラウザ上で実現して。(
OpenPGP.js
の力)