2017-01-28 22 views
0

При получении запроса на отправку размещенные данные проходят через несколько функций, и когда обработка завершена, отображается соответствующая веб-страница. Проблема в том, что существует небольшая задержка, так как функции обработки данных несколько занимают время.Показать Прогресс при обработке запроса на отправку в golang webapp

Есть ли способ показать клиентам ход обработки данных? По существу, когда данные размещены, я хочу некоторые сообщения будут dislayed как

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

Я использую golang для моего бэкэнда и httprouter julienschmidt в.

ответ

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) 

флеш клиенту перед выполнением всех работ. Для того, чтобы больше контроля вы можете даже угнать Connection

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.

 Смежные вопросы

  • Нет связанных вопросов^_^