From 05b9f4d6c9c9d560fab8545e92145d1bc74ef22a Mon Sep 17 00:00:00 2001 From: Joachim Bauch Date: Wed, 18 Jan 2023 15:43:44 +0100 Subject: [PATCH] Always process initial joined / virtual session flags asynchronously. Otherwise the ordering might be different as the initial messages could be received before previous asynchronous messages. --- room.go | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/room.go b/room.go index 5c1bb4a..80429a2 100644 --- a/room.go +++ b/room.go @@ -365,16 +365,11 @@ func (r *Room) notifySessionJoined(sessionId string) { }, } - if session != nil { - // No need to send through asynchronous events, the session is connected locally. - session.(*ClientSession).SendMessage(msg) - } else { - if err := r.events.PublishSessionMessage(sessionId, r.backend, &AsyncMessage{ - Type: "message", - Message: msg, - }); err != nil { - log.Printf("Error publishing joined events to session %s: %s", sessionId, err) - } + if err := r.events.PublishSessionMessage(sessionId, r.backend, &AsyncMessage{ + Type: "message", + Message: msg, + }); err != nil { + log.Printf("Error publishing joined events to session %s: %s", sessionId, err) } // Notify about initial flags of virtual sessions. @@ -402,16 +397,11 @@ func (r *Room) notifySessionJoined(sessionId string) { }, } - if session != nil { - // No need to send through asynchronous events, the session is connected locally. - session.(*ClientSession).SendMessage(msg) - } else { - if err := r.events.PublishSessionMessage(sessionId, r.backend, &AsyncMessage{ - Type: "message", - Message: msg, - }); err != nil { - log.Printf("Error publishing initial flags to session %s: %s", sessionId, err) - } + if err := r.events.PublishSessionMessage(sessionId, r.backend, &AsyncMessage{ + Type: "message", + Message: msg, + }); err != nil { + log.Printf("Error publishing initial flags to session %s: %s", sessionId, err) } } }