Questo semplice server HTTP contiene una chiamata a time.Sleep() che rende ogni richiesta impiega cinque secondi. Quando provo a caricare rapidamente più schede in un browser, è ovvio che ogni richiesta viene accodata e gestita in modo sequenziale. Come posso far sì che gestisca richieste concorrenti?Perché il mio server web in golang non gestisce richieste concorrenti?
package main
import (
"fmt"
"net/http"
"time"
)
func serve(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello, world.")
time.Sleep(5 * time.Second)
}
func main() {
http.HandleFunc("/", serve)
http.ListenAndServe(":1234", nil)
}
In realtà, ho appena trovato la risposta a questo dopo aver scritto la domanda, ed è molto sottile. Lo sto pubblicando comunque, perché non ho trovato la risposta su Google. Riesci a vedere cosa sto facendo male?
Qual è la risposta che hai trovato? –
Il problema era nel modo in cui ho provato. I browser Web limitano il numero di connessioni che effettuano a qualsiasi server, anche tra le schede. –
Potrebbe anche piacerti usare jMeter per inviare una richiesta al tuo server –