669だけど結局1週間たって解決しなかった…

Rails サーバーで画面はリソースモデルの6画面そのまま index が一覧画面になってて
そこに検索機能がついててカラムの値でいろいろ検索というかしぼりこみができるようになってて
データ1つ1つがCSVファイルをもっててそれは前もってAWSのS3に保存してあるんだけど
最終的に絞り込んだ検索結果のCSVだけをS3からもってきてZIPを作ってダウンロード
っていうことが要求されてる

何も考えずに実装するとダウンロードボタンをクリックした瞬間ZIPを作り始めるて
ZIPが完成してから send_data で送り始めるからダウンロードが始まるまでに数分かかる
その間 chrome だと左下に localhost... を待機していますって出るだけでUI的に不親切だし
タイムアウトする可能性もあるから何らかの通信はし続けたいんですよね

ZIPをストリームで作ったそばから送ることができれば
ブラウザ側のダウンロード進捗がでてくれるからそれですむ話なんですけど
RailsサーバーでZIPを作りながらストリームで返すのがなかなか難しい
あとインポートの機能もあるのでどっちにしろインポートでは何かしらじぶんで進捗をかえさなきゃいけない

なのでコントローラーが処理中に>>669みたいな何らかの進捗レスポンスを返したいと思った次第なんですが
こっちもajax使ったりSSEだったりfetchだったりいろいろ使ってみたけど
リクエストレスポンスを1つのコネクションでできなかったりIEが対応してなかったりで結局解決しなかった…

しかも Rails と JS 両方が普通のHTTP通信じゃないことしなきゃいけないから両方に詳しい知り合いがいなくてきくにきけない
ダウンロードアップロードに進捗つけるのってふつうに需要りそうなのにこんなに大変なんですね

普段はJSやCSSとかフロントエンドメインで バックエンドはApache 上に PHP CGI おいて
フォームからきたデータを MySQL に保存するぐらいしかやったことがないので
Rails 初めてさわったんですけどフレームワーク使うと逆に制限が多くてやりたいことができなくて苦労します