2017-01-28 6 views
0

投稿リクエストを受信すると、投稿データはいくつかの機能を通過し、処理が完了すると適切なWebページが表示されます。問題は、データを処理するための関数が多少時間がかかるので少し遅れがあることです。golang webappで投稿リクエストを処理中の進行状況を表示

クライアントにデータ処理の進捗状況を示す方法はありますか?データが掲載されている場合基本的に、私はいくつかのメッセージが

Loading data (xyz conversion done) 
Loading data (xyz added to stream) 

ようdislayedすることにしたい私は、私のバックエンドとjulienschmidtのhttprouterためgolangを使用しています。

答えて

0

w ResponseWriterハンドラーでfunc(w ResponseWriter,r *Request)はおそらくhttp.Flusherインターフェイスを実装しています。そうすることができます。

io.WriteString(w, "Loading data (xyz conversion done)") 
w.(http.Flusher).Flush() //you must assert it implements 
io.WriteString(w, payload) 

すべての作業が完了する前に、クライアントにフラッシュします。あなたも接続

conn, bufrw, err :=w.(http.Hijacker).Hijack() 
defer conn.Close() 
bufrw.WriteString("Loading data (xyz conversion done)") 
bufrw.Flush() 
bufrw.WriteString("Loading data (xyz added to stream)") 
bufrw.Flush() 

をハイジャックし、生のTCPを話すことができるより多くの制御を取るために 。

0

進行状況インジケータの表示は、クライアント側のコードの処理です(非同期呼び出し中)。

HTTPは要求応答プロトコルです。レスポンスには標準的な形式(ステータス行、ヘッダー、メッセージ本文を含む)があります。彼らは部分的に送られていません。

あなたが示唆しているのは、TCP接続に関係しますが、HTTPは関係ありません。

関連する問題