在一个go程序中同时运行两个Web服务器

在go程序中,我想同时运行两个Web服务器

显然它们将在两个不同的端口(如果需要,还有IP地址)上提供服务,

问题在于调用http.handle,当我尝试为’ /’对于第二台服务器,它会慌张,并说已经有一个与’/’相关联的处理程序,

我想我除了需要之外还需要创建一个多路复用器DefaultServeMux,我尝试使用来实现,gorillaMux但无法弄清楚,

在同一程序/进程中运行两个Web服务器是否存在根本性的错误。

更清楚地说,这两个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())

回答:

我认为您只需要删除以下几行:

http.Handle("/", myMux)

http.Handle("/", gorillaMux)

在myMux和gorillaMux中已经定义了所有路由。

检查此:http :

//play.golang.org/p/wqn4CZ01Z6

以上是 在一个go程序中同时运行两个Web服务器 的全部内容, 来源链接: utcz.com/qa/417214.html

回到顶部