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.
This commit is contained in:
Joachim Bauch 2023-01-18 15:43:44 +01:00
parent 567183747a
commit 05b9f4d6c9
No known key found for this signature in database
GPG key ID: 77C1D22D53E15F02

30
room.go
View file

@ -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)
}
}
}