I want to setup a http server with httprouter listening on two ports 8888
and 8080
just like the code below.
package main
import (
"fmt"
"github.com/julienschmidt/httprouter"
"log"
"net/http"
)
func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
fmt.Fprint(w, "Welcome!
")
}
func main() {
router := httprouter.New()
router.GET("/", Index)
fmt.Println("listen on 8080")
// this is where blocked
go log.Fatal(http.ListenAndServe(":8080", router))
fmt.Println("listen on 8888")
log.Fatal(http.ListenAndServe(":8888", router))
}
But it doesn't work properly,my server only listen on 8080
.If I make some change:
go func() { log.Fatal(http.ListenAndServe(":8080", router)) }()
It works finely both on 8080
and 8888
.So why? It's about closure
or something else?