summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2016-11-04 13:43:49 -0400
committerHarrison Healey <harrisonmhealey@gmail.com>2016-11-04 13:43:49 -0400
commitec7f3ceee8b105036ea14550d102a6a1fa14cf82 (patch)
treeee15c125c72164367577a6f3ce165f1edc87e16d /api
parente63e80dee012b22aca94c0095e184c6a6a80d4d7 (diff)
downloadchat-ec7f3ceee8b105036ea14550d102a6a1fa14cf82.tar.gz
chat-ec7f3ceee8b105036ea14550d102a6a1fa14cf82.tar.bz2
chat-ec7f3ceee8b105036ea14550d102a6a1fa14cf82.zip
Fixing websocket unregister so it unregisters from the correct hub. (#4452)
Diffstat (limited to 'api')
-rw-r--r--api/web_hub.go18
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) {