【发布时间】:2020-08-15 02:56:21
【问题描述】:
我们正在使用 gin 在生产环境中公开一些 REST API。现在我必须在 HTTP 服务器启动后做一些事情。
我对频道不是很熟悉,但下面给出的代码是我想要做的。一旦startHTPPRouter() 启动HTTP 服务,我想向main() 发送信号。根据这个信号,我想做一些其他的事情。
请让我知道我在下面给出的代码中做错了什么。
func startHTTPRouter(routerChannel chan bool){
router := gin.New()
// Many REST API routes definitions
router.Run("<port>")
routerChannel <- true // Is this gonna work ? Because Run() again launches a go routine for Serve()
}
func main() {
routerChannel := make(chan bool)
defer close(routerChannel)
go startHTTPRouter(routerChannel )
for {
select {
case <-routerChannel:
doStuff() // Only when the REST APIs are available.
time.Sleep(time.Second * 5)
default:
log.Info("Waiting for router channel...")
time.Sleep(time.Second * 5)
}
}
}
【问题讨论】:
-
starts是什么意思? :P 一旦它在一个套接字上监听和接受?一旦它在听?
标签: go channel goroutine httpserver go-gin