请考虑这个问题:
我必须在独特的端口上启动多个监听器,例如:
function launchUI(self *myObject) {
fs := http.FileServer(http.Dir(self.staticFs))
http.Handle("/static/", http.StripPrefix("/static/", fs))
go http.HandleFunc("/login", self.loginHandler)
errx := http.ListenAndServeTLS(self.uiport, self.cert, self.key, nil)
if errx != nil {
fmt.Println("http Listen err", errx)
panic("http Listen")
}
}
listOfObjects := []*myObject{}
for _, obj := range(listofObjects){
obj.launchUI()
<snip>
} 其中每一个都在唯一的self.uiport上,我必须为每个对象提供/static/和/login。非常简单的东西。除非,如果我的listOfObjects中有多个项目,这将失败:
panic: http: multiple registrations for /static/
goroutine 7 [running]:
net/http.(*ServeMux).Handle(0x4da250, 0x2b8830, 0x1, 0x324f68, 0x12183a8)
/usr/local/go/src/net/http/server.go:2403 +0x278
net/http.(*ServeMux).HandleFunc(...)
/usr/local/go/src/net/http/server.go:2440
net/http.HandleFunc(...)
/usr/local/go/src/net/http/server.go:2452
main.(*userStruct).startUI(0x10d6160)你能教我怎么修这个吗?
发布于 2020-10-27 10:46:26
function launchUI(self *myObject) {
fs := http.FileServer(http.Dir(self.staticFs))
mux := http.NewServeMux()
mux.Handle("/static/", http.StripPrefix("/static/", fs))
mux.HandleFunc("/login", self.loginHandler)
errx := http.ListenAndServeTLS(self.uiport, self.cert, self.key, mux)
if errx != nil {
fmt.Println("http Listen err", errx)
panic("http Listen")
}
}https://stackoverflow.com/questions/64547354
复制相似问题