diff options
author | Christopher Speller <crspeller@gmail.com> | 2016-11-04 13:43:49 -0400 |
---|---|---|
committer | Harrison Healey <harrisonmhealey@gmail.com> | 2016-11-04 13:43:49 -0400 |
commit | ec7f3ceee8b105036ea14550d102a6a1fa14cf82 (patch) | |
tree | ee15c125c72164367577a6f3ce165f1edc87e16d | |
parent | e63e80dee012b22aca94c0095e184c6a6a80d4d7 (diff) | |
download | chat-ec7f3ceee8b105036ea14550d102a6a1fa14cf82.tar.gz chat-ec7f3ceee8b105036ea14550d102a6a1fa14cf82.tar.bz2 chat-ec7f3ceee8b105036ea14550d102a6a1fa14cf82.zip |
Fixing websocket unregister so it unregisters from the correct hub. (#4452)
-rw-r--r-- | api/web_hub.go | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/api/web_hub.go b/api/web_hub.go index dfbdf3838..e59521879 100644 --- a/api/web_hub.go +++ b/api/web_hub.go @@ -69,17 +69,19 @@ func HubStop() { hubs = make([]*Hub, 0) } -func HubRegister(webConn *WebConn) { +func GetHubForUserId(userId string) *Hub { hash := fnv.New32a() - hash.Write([]byte(webConn.UserId)) + hash.Write([]byte(userId)) index := hash.Sum32() % uint32(len(hubs)) - hubs[index].Register(webConn) + return hubs[index] +} + +func HubRegister(webConn *WebConn) { + GetHubForUserId(webConn.UserId).Register(webConn) } func HubUnregister(webConn *WebConn) { - for _, hub := range hubs { - hub.Unregister(webConn) - } + GetHubForUserId(webConn.UserId).Unregister(webConn) } func Publish(message *model.WebSocketEvent) { @@ -111,9 +113,7 @@ func InvalidateCacheForUser(userId string) { func InvalidateCacheForUserSkipClusterSend(userId string) { Srv.Store.Channel().InvalidateAllChannelMembersForUser(userId) - for _, hub := range hubs { - hub.InvalidateUser(userId) - } + GetHubForUserId(userId).InvalidateUser(userId) } func (h *Hub) Register(webConn *WebConn) { |