Lucas, miembro de este equipo, nos hizo el favor de redactar esta sección ya que domina perfectamente este tema.
Solución:
Desde net/http
GoDoc y Fuente.
ListenAndServe starts an HTTP server with a given address and handler. The handler is usually nil, which means to use DefaultServeMux. Handle and HandleFunc add handlers to DefaultServeMux
DefaultServeMux
es solo un predefinido http.ServeMux
var DefaultServeMux = &defaultServeMux
var defaultServeMux ServeMux
Como puedes ver http.Handle
llamadas DefaultServeMux
internamente.
func Handle(pattern string, handler Handler) DefaultServeMux.Handle(pattern, handler)
El propósito de http.NewServeMux()
es tener tu propia instancia de http.ServerMux
para casos como cuando necesita dos http.ListenAndServe
funciones de escucha de diferentes puertos con diferentes rutas.
el multiplexor en Golang es algo así como un multiplexor en hardware que multiplica algunas entradas en algunas salidas
te di un ejemplo simple
type CustomMultiplexer struct
el multiplexor dado tiene que implementar el ServeHTTP
método para registrarse int http a las entradas del servidor
func (mux CustomMultiplexer) ServeHTTP(w http.ResponseWriter, r *http.Request)
if r.URL.Path == "/"
SimpleRequestHandler(w, r)
return
http.NotFound(w, r)
return
mi SimpleRequestHandler
es un método de la siguiente manera
func SimpleRequestHandler(w http.ResponseWriter, r *http.Request)
switch r.Method
case http.MethodGet:
mySimpleGetRequestHandler(w, r)
break
default:
http.Error(w, "method not allowed", http.StatusMethodNotAllowed)
break
Sé que puedo usar mi CustomMultiplxere
para hacer multiplexación entre solicitudes entrantes
func main()
customServer := CustomServer
err := http.ListenAndServe(":9001", &customServer)
if err != nil
panic(err)
los http.HandleFunc
El método funciona como mi multiplexor simple dado.
Aquí tienes las comentarios y puntuaciones
Si te gustó nuestro trabajo, tienes la opción de dejar una reseña acerca de qué te ha parecido esta noticia.