Improve client disconnect detection

This commit is contained in:
2024-06-27 11:05:30 +02:00
parent 4acb89cdb1
commit 4ca3053243
3 changed files with 60 additions and 41 deletions

View File

@@ -9,6 +9,7 @@ import (
type WSServer struct {
connections map[*WSConnection]bool
clientId int32
Upgrader websocket.Upgrader
Broadcast chan string
IdleTimeout time.Duration
@@ -42,9 +43,12 @@ func (server *WSServer) HandleNew(conn *websocket.Conn) {
server.connections[wsconn] = true
go func() {
<-wsconn.ErrorChan
err := <-wsconn.ErrorChan
wsconn.alive = false
close(wsconn.ReadChan)
close(wsconn.WriteChan)
close(wsconn.ErrorChan)
log.Printf("Client %d: disconnected due to %+v, now %d clients", wsconn.id, err, len(server.connections))
delete(server.connections, wsconn)
log.Printf("Client disconnected, now %d clients", len(server.connections))
}()
}