Мы используем 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)
}
}
}