Ich entwickle Chat-Rooms basierend auf Twitter Hashtag mit Server gesendet Ereignisse, mit dem PaketEventsource golang: Wie erkennt man Client-Trennung?
Ich habe ein Problem bezüglich der Trennung des Clients. Ich führe eine Goroutine aus, um Nachrichten an den Client zu senden, aber wenn der Client die Verbindung trennt, läuft die Goroutine weiter.
Ich weiß nicht, auf der Serverseite zu erkennen, dass der Client nicht verbunden ist.
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))
}
}()
}
Vielen Dank für Ihre Antwort. Mein Problem ist, dass das Paket, das ich verwende, nicht die ConsumerCount() - Funktion vorschlägt. – GuillaumeP