0
我想每幾秒鐘運行一次(通過websocket更新客戶端)。我認爲我應該使用time.Ticker
。但是,我如何才能使其發揮作用?我有以下,但它不工作...Golang:每隔幾秒用Ticker運行一次東西
func main() {
hub = NewAppSocketHub()
ticker := time.NewTicker(time.Second)
go func() {
for {
log.Printf("In loop")
select {
case <-ticker.C:
log.Printf("Broadcasting to %d clients", len(hub.Clients))
hub.Broadcast <- UpdatePayload{
InstanceID: "Test",
Status: "running",
}
}
}
log.Printf("Out of loop")
}()
r := chi.NewRouter()
r.Use(render.SetContentType(render.ContentTypeJSON))
r.Use(Cors)
r.Post("/auth/login", Login)
r.HandleFunc("/ws", WebSocketEcho)
// ...
http.ListenAndServe(":9000", r)
log.Printf("Ended...")
}
我認爲你可以忽略NewAppSocketHub
和其他應用程序特定的實現。我目前遇到的問題是我得到
2017/06/14 16:08:05 In loop
2017/06/14 16:08:06 Broadcasting to 0 clients
它似乎循環休息?怎麼了?
'select'背後的意圖是什麼? – Volker