Fixing websocket unregister so it unregisters from the correct hub. (#4452)
Этот коммит содержится в:
коммит произвёл
Harrison Healey
родитель
e63e80dee0
Коммит
ec7f3ceee8
@@ -69,17 +69,19 @@ func HubStop() {
|
|||||||
hubs = make([]*Hub, 0)
|
hubs = make([]*Hub, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
func HubRegister(webConn *WebConn) {
|
func GetHubForUserId(userId string) *Hub {
|
||||||
hash := fnv.New32a()
|
hash := fnv.New32a()
|
||||||
hash.Write([]byte(webConn.UserId))
|
hash.Write([]byte(userId))
|
||||||
index := hash.Sum32() % uint32(len(hubs))
|
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) {
|
func HubUnregister(webConn *WebConn) {
|
||||||
for _, hub := range hubs {
|
GetHubForUserId(webConn.UserId).Unregister(webConn)
|
||||||
hub.Unregister(webConn)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Publish(message *model.WebSocketEvent) {
|
func Publish(message *model.WebSocketEvent) {
|
||||||
@@ -111,9 +113,7 @@ func InvalidateCacheForUser(userId string) {
|
|||||||
func InvalidateCacheForUserSkipClusterSend(userId string) {
|
func InvalidateCacheForUserSkipClusterSend(userId string) {
|
||||||
Srv.Store.Channel().InvalidateAllChannelMembersForUser(userId)
|
Srv.Store.Channel().InvalidateAllChannelMembersForUser(userId)
|
||||||
|
|
||||||
for _, hub := range hubs {
|
GetHubForUserId(userId).InvalidateUser(userId)
|
||||||
hub.InvalidateUser(userId)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Hub) Register(webConn *WebConn) {
|
func (h *Hub) Register(webConn *WebConn) {
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user