Второй тип параметра функции http.ListenAndServe
- http.Handler, если он равен nil, http lib использует http.DefaultServeMux
http.Handler.
ваш /api
регистр маршрутизации к mux.NewRouter()
, ваш /
и /ws
регистр маршрутов к http.DefaultServeMux
, это два разных http.Handler objet c, вам необходимо объединить запросы маршрутизации, зарегистрированные двумя маршрутизаторами.
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/api", home)
// move ws up, prevent '/*' from covering '/ws' in not testing mux, httprouter has this bug.
router.HandleFunc("/ws", handleConnections)
// PathPrefix("/") match '/*' request
router.PathPrefix("/").Handler(http.FileServer(http.Dir("../public")))
go handleMessages()
http.ListenAndServe(":8000", router)
пример гориллы / мукса не использовать функцию http.HandleFun c.