Zajmuję czatów opartych na Twitterze hashtag z serwera wysyłane zdarzenia, z pakietem https://github.com/antage/eventsourceEventource golang: jak wykryć rozłączenie klienta?
Mam problem dotyczący odłączenia klienta. Używam goroutine do wysyłania wiadomości do klienta, ale kiedy klient się rozłącza, goroutine nadal działa.
Nie wiem, jak wykryć po stronie serwera, że klient jest odłączony.
func (sh StreamHandler) ServeHTTP(resp http.ResponseWriter, req *http.Request) {
es := eventsource.New(
&eventsource.Settings{
Timeout: 2 * time.Second,
CloseOnTimeout: true,
IdleTimeout: 2 * time.Second,
Gzip: true,
},
func(req *http.Request) [][]byte {
return [][]byte{
[]byte("X-Accel-Buffering: no"),
[]byte("Access-Control-Allow-Origin: *"),
}
},
)
es.ServeHTTP(resp, req)
go func() {
var id int
for {
id++
time.Sleep(1 * time.Second)
es.SendEventMessage("blabla", "message", strconv.Itoa(id))
}
}()
}
Dzięki za odpowiedź. Mój problem polega na tym, że pakiet, którego używam, nie proponuje funkcji ConsumerCount(). – GuillaumeP