条件:ブラウザでPiping Server経由でエンドツーエンドの暗号化して大きいデータが転送するための条件
#Piping_Server #WebブラウザのJavaScript
何が揃えば、エンドツーエンドの暗号化をしてブラウザでデータが送れるかについて。
注意点
これはブラウザでやる話。opensslやgpgコマンドが使える環境ならすでに可能。スマホアプリのネイティブとかで実装すればできるはず。ブラウザだけで実装するときの話。
現在の解決法
Web上でPiping Server経由のエンドツーエンド暗号化したファイル転送で書いた方法
データをチャンクごとにPiping Serverに送り、チャンクを受け取る方法
転送するための条件
ReadableStreamをfetch()のHTTPボディにできること
ReadableStreamをストリーミングしながらダウンロードできること
上記だけである。Streams APIが整備される必要もある。特にSafari。
ブラウザのJavaScriptでPOSTリクエストのBodyをストリーミングしたいが、Chromeも未対応みたいで書いた通り、現在のところ、ReadableStreamのボディにできない。これができないと暗号化しているReadableStreamを渡すようなことができない。
もちろんこれも全部メモリ上に載せることも可能だが、大きいファイルだと現実的ではない。
ReadableStreamはストリーミングしながらダウンロードできるべき。一応全部メモリに落とせばストリーミングできなくてもOKだが、大きいファイルは現実的ではない。StreamSaver.jsを使えば、現在でもデスクトップ版ChromeやFirefoxなどではストリーミングしながらダウンロードできる。
一言でいえば、ブラウザがストリームに強くなって欲しい。