我正在玩去HTTP包。我想像java一樣處理請求。但我不能。如何在編程語言中處理並行HTTP請求?
我創建了一個簡單的Web服務器,在中間休眠並意識到每次處理一個請求,所以如果我在瀏覽器上進行刷新,第一個請求的處理必須完成,直到第二個請求開始處理,這裏是代碼:
func main(){
//Process the http commands
fmt.Printf("Starting http Server ... ")
http.Handle("/", http.HandlerFunc(sayHello))
err := http.ListenAndServe("0.0.0.0:8080", nil)
if err != nil {
fmt.Printf("ListenAndServe Error",err)
}
}
func sayHello(c http.ResponseWriter, req *http.Request) {
fmt.Printf("New Request\n")
processRequest(c, req)
}
func processRequest(w http.ResponseWriter, req *http.Request){
time.Sleep(time.Second*3)
w.Write([]byte("Go Say’s Hello(Via http)"))
fmt.Println("End")
}
正如我想並行處理兩個請求我加入之前的「go」命令「的processRequest(C,REQ)」中的「sayHello的」功能,以處理每個請求在不同的gorutine。但是......它不起作用......我不知道爲什麼。我知道這兩個請求都被處理,因爲我在控制檯看到了打印的行,但瀏覽器一直在等待信息.....並且不顯示我的迴應。
所以...我的問題,
是否每個請求創建一個新的http.ResponseWriter?或者它使用相同? 您是否知道如何指示Web服務器使用不同線程處理每個請求?
任何幫助,歡迎....
Fersca
謝謝。因爲瀏覽器太聰明的行爲,今天浪費了很多時間:) –