Ali*_*Ali 3 webserver go mux gorilla servemux
在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())
Run Code Online (Sandbox Code Playgroud)
我想你只需删除这些行:
http.Handle("/", myMux)
http.Handle("/", gorillaMux)
Run Code Online (Sandbox Code Playgroud)
所有路由都已在myMux和gorillaMux中定义.
检查一下:http://play.golang.org/p/wqn4CZ01Z6
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |