首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >死机: http: /static/的多个注册

死机: http: /static/的多个注册
EN

Stack Overflow用户
提问于 2020-10-27 10:00:48
回答 1查看 752关注 0票数 0

请考虑这个问题:

我必须在独特的端口上启动多个监听器,例如:

代码语言:javascript
复制
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中有多个项目,这将失败:

代码语言:javascript
复制
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)

你能教我怎么修这个吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-27 10:46:26

代码语言:javascript
复制
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")
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64547354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档