gpt4 book ai didi

戈朗 : Running something every few seconds with Ticker

转载 作者:IT王子 更新时间:2023-10-29 02:11:46 26 4
gpt4 key购买 nike

我想每隔几秒运行一次(通过 websocket 更新客户端)。我想我应该使用 time.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

循环似乎中断了?怎么了?

最佳答案

鉴于它不知道 hub 的实现,向 hub.Broadcast channel 发送消息是阻塞的,因此如果没有人从它消费消息它会等待,阻止循环继续。

关于戈朗 : Running something every few seconds with Ticker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44539107/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com