Http 如何返回多个响应
我读过异步响应和,Http 如何返回多个响应,http,go,httpresponse,Http,Go,Httpresponse,我读过异步响应和, 我尝试使用golang返回多个响应, 但我不知道我怎么能做到 我的例子是: package main import ( "fmt" "io/ioutil" "log" "net/http" ) func main() { http.HandleFunc("/", multiResponse) http.ListenAndServe(":8080", nil) } func multiResponse(w http.Resp
我尝试使用golang返回多个响应, 但我不知道我怎么能做到 我的例子是:
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", multiResponse)
http.ListenAndServe(":8080", nil)
}
func multiResponse(w http.ResponseWriter, r *http.Request) {
go func() {
resp, err := http.Get("https://www.google.com.eg/search?q=hello")
if err != nil {
log.Println(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Println(err)
}
// w.WriteHeader(http.StatusOK)
// w.Write(body)
fmt.Fprintln(w, string(body))
resp.Body.Close()
fmt.Println("done...")
}()
w.WriteHeader(http.StatusAccepted)
}
有什么例子可以理解异步响应吗
编辑:我的意思是关于多重反应,
当我收到客户的请求时,我会立即发送,
在另一个goroutine中,其他进程工作,然后在完成发送后使用一些数据。HTTP响应中的多重响应是什么意思?您指的是分块/增量响应写入吗?当处理程序返回时,http/服务器完成响应。您需要添加一个等待组或其他一些同步来阻止处理程序,直到goroutine完成。一种更简单的方法是删除goroutine并执行hander的goroutine中的所有代码。我编辑了我的问题。您可能希望查看go通道以获得异步响应。您试图实现什么?HTTP/1.x通常是单请求->单响应。您可能会看到WebSocket,甚至HTTP/2.0服务器推送。您所说的HTTP响应中的多响应是什么意思?您指的是分块/增量响应写入吗?当处理程序返回时,http/服务器完成响应。您需要添加一个等待组或其他一些同步来阻止处理程序,直到goroutine完成。一种更简单的方法是删除goroutine并执行hander的goroutine中的所有代码。我编辑了我的问题。您可能希望查看go通道以获得异步响应。您试图实现什么?HTTP/1.x通常是单请求->单响应。您可以查看WebSocket,甚至HTTP/2.0服务器推送。