【发布时间】:2014-02-06 14:57:21
【问题描述】:
在一个 go 程序中,我想同时运行两个 web 服务器,
显然,它们将在两个不同的端口上提供服务(必要时还提供 IP 地址),
问题在于对http.handle 的调用,当我尝试为第二台服务器注册“/”处理程序时,它会出现恐慌并说已经有一个与“/”关联的处理程序,
我想除了DefaultServeMux 之外我还需要创建一个多路复用器,我尝试使用gorillaMux 来实现它,但无法弄清楚,
在同一个程序/进程中运行两个 Web 服务器是否存在根本问题。
为了更清楚,两个 Web 服务器之一用作常规 Web 服务器,我需要第二个用作 RPC 服务器,以便在运行在不同节点上的程序实例之间进行通信集群,
编辑:为了更清楚一点,这不是实际代码,而是要点
myMux := http.NewServeMux()
myMux.HandleFunc("/heartbeat", heartBeatHandler)
http.Handle("/", myMux)
server := &http.Server{
Addr: ":3400",
Handler: myMux,
}
go server.ListenAndServe()
gorillaMux := mux.NewRouter()
gorillaMux.HandleFunc("/", indexHandler)
gorillaMux.HandleFunc("/book", bookHandler)
http.Handle("/", gorillaMux)
server := &http.Server{
Addr: ":1234",
Handler: gorillaMux,
}
log.Fatal(server.ListenAndServe())
【问题讨论】:
-
你能提供你使用的代码吗?
标签: go webserver mux gorilla servemux