From 5157ed17a62cc5d08670eab0670a917c62b3f777 Mon Sep 17 00:00:00 2001 From: Akira Ho Date: Fri, 5 Jan 2018 09:30:21 +0800 Subject: [PATCH] websocket disconnect/leave-all-rooms should delete empty rooms as well otherwise rooms hash goes ever growing Former-commit-id: 7f228be67cab79fc34f4a5a6a8b41b6ba8330186 --- websocket/server.go | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/websocket/server.go b/websocket/server.go index cd17c3ce..1af3caba 100644 --- a/websocket/server.go +++ b/websocket/server.go @@ -259,17 +259,8 @@ func (s *Server) join(roomName string, connID string) { // LeaveAll kicks out a connection from ALL of its joined rooms func (s *Server) LeaveAll(connID string) { s.mu.Lock() - for name, connectionIDs := range s.rooms { - for i := range connectionIDs { - if connectionIDs[i] == connID { - // fire the on room leave connection's listeners - s.connections.get(connID).fireOnLeave(name) - // the connection is inside this room, lets remove it - if i < len(s.rooms[name]) { - s.rooms[name] = append(s.rooms[name][:i], s.rooms[name][i+1:]...) - } - } - } + for name, _ := range s.rooms { + s.leave(name, connID) } s.mu.Unlock() }