Improve client disconnect detection
This commit is contained in:
@@ -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))
|
||||
}()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user