I'm new to Go and the time package is a tad confusing for me. So I'm making a chat box and the idea is that when you send a message, the timer resets to 20 seconds, and if you don't respond by 20 seconds you get kicked out. The code I have works only if the person has typed something, but if they never input anything, they don't get kicked out. I tried applying Stop()
before the for loop, but it doesn't work. Should I do all the timer before and after the loop rather than inside the for loop?
func ... {
timer := time.NewTimer(20 * time.Second)
for input.Scan() {
go func(){
<-timer.C
leaving <- ch
conn.Close()
}()
messages <- input.Text()
timer.Stop()
timer.Reset(20 * time.Second)
}