質問編集履歴
3
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -73,3 +73,49 @@
|
|
73
73
|
POSTでリクエストを送ってそのままそのコネクションを使ってレスポンスをストリームでうけるというのができないみたいで…
|
74
74
|
|
75
75
|
そうなると別のコントローラーを叩くことになっていずれにしろRailsに並列処理が求められます
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
追記
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
Rails:
|
84
|
+
|
85
|
+
```
|
86
|
+
|
87
|
+
self.response_body = Rack::Chunked::Body.new(Enumerator.new do |y|
|
88
|
+
|
89
|
+
```
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
参考: http://ode.hatenadiary.jp/entry/20120123/1327301403
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
javascript:
|
98
|
+
|
99
|
+
```
|
100
|
+
|
101
|
+
fetch()
|
102
|
+
|
103
|
+
.then((response) => response.body.getReader())
|
104
|
+
|
105
|
+
.then((reader) => {}
|
106
|
+
|
107
|
+
```
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
参考: https://sbfl.net/blog/2018/05/26/javascript-streams-api/
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
でファイルアップロードリクエストの後レスポンスをストリームでうけとれるようにできました
|
116
|
+
|
117
|
+
ただせっかく実装して動作までしたのに今回の案件の動作環境にはいっていたIE11がFetchに非対応だったのでまた別の方法が必要みたいです…
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
IE11で動くJS側でレスポンスを途中で読む方法はないでしょうか…
|
2
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
|
46
46
|
|
47
|
-
別にサーバーをたてるとなるとモニターやログの監視も必要になるし
|
47
|
+
別にサーバーをたてるとなるとリソースやキューのモニターやログの監視も必要になるし
|
48
48
|
|
49
49
|
同じクラウドのマシン上で動かすとリソースも問題になるし
|
50
50
|
|
1
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,3 +21,55 @@
|
|
21
21
|
どの接続がどの進捗をほしがってるのか対応をとるのも大変そうだし
|
22
22
|
|
23
23
|
普通はどのような方法を使うのでしょうか
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
追記:
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
ファイルインポート・エクスポートに進捗報告をつける方法をずっと調べていたんですが
|
32
|
+
|
33
|
+
Rails でコントローラーが処理中に進捗報告等の別のリクエストに返答を行いたい場合
|
34
|
+
|
35
|
+
非同期処理についていろいろ調べたのですがどれも別のジョブサーバーを立ててキューを保存するらしく
|
36
|
+
|
37
|
+
本当にそんなことまでしないと進捗報告というのは実現できないのでしょうか
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
Apache では普通に別リクエストには別のプロセスがわりあてられて
|
42
|
+
|
43
|
+
同時処理してくれる気がするのですがRailsでできないのは何か理由があるのでしょうか
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
別にサーバーをたてるとなるとモニターやログの監視も必要になるし
|
48
|
+
|
49
|
+
同じクラウドのマシン上で動かすとリソースも問題になるし
|
50
|
+
|
51
|
+
とくにいずれもアップロードしたファイルや生成したダウンロードファイルをジョブサーバーとコントローラーでやりとりしなければいけないので非常に無駄な気がするのです
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
学生時代に習った低レベルのTCPソケット通信であればインポートの場合
|
56
|
+
|
57
|
+
アップロードリクエストをうけとったら進捗メッセージを徐々に返して
|
58
|
+
|
59
|
+
それをJSでゆっくりよめばいいだけだし
|
60
|
+
|
61
|
+
エクスポートでも準備中に少しずつ進捗メッセージを返して
|
62
|
+
|
63
|
+
準備完了メッセージを返したらそれ以降をダウンロードデータとみなすみたいにすれば
|
64
|
+
|
65
|
+
1度のリクエスト+レスポンスだけで実現できる気がするのですが今のウェブ技術では不可能なのでしょうか
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
一応少しずつレスポンスしたりそれをよんだりするのはSSEやFETCHという技術でできるみたいなのですが
|
70
|
+
|
71
|
+
どちらもテストコードをかいて通信するところまではできたのですが
|
72
|
+
|
73
|
+
POSTでリクエストを送ってそのままそのコネクションを使ってレスポンスをストリームでうけるというのができないみたいで…
|
74
|
+
|
75
|
+
そうなると別のコントローラーを叩くことになっていずれにしろRailsに並列処理が求められます
|