Include room session id in "joined" events.

This helps with matching signaling sessions with sessions in Talk.
This commit is contained in:
Joachim Bauch 2021-12-17 16:02:22 +01:00
parent 468470d128
commit 76ad24ca62
No known key found for this signature in database
GPG Key ID: 77C1D22D53E15F02
4 changed files with 15 additions and 5 deletions

View File

@ -632,9 +632,10 @@ type EventServerMessage struct {
} }
type EventServerMessageSessionEntry struct { type EventServerMessageSessionEntry struct {
SessionId string `json:"sessionid"` SessionId string `json:"sessionid"`
UserId string `json:"userid"` UserId string `json:"userid"`
User *json.RawMessage `json:"user,omitempty"` User *json.RawMessage `json:"user,omitempty"`
RoomSessionId string `json:"roomsessionid,omitempty"`
} }
// MCU-related types // MCU-related types

8
hub.go
View File

@ -1186,11 +1186,15 @@ func (h *Hub) notifyUserJoinedRoom(room *Room, session *ClientSession, sessionDa
if sessions := room.AddSession(session, sessionData); len(sessions) > 0 { if sessions := room.AddSession(session, sessionData); len(sessions) > 0 {
events := make([]*EventServerMessageSessionEntry, 0, len(sessions)) events := make([]*EventServerMessageSessionEntry, 0, len(sessions))
for _, s := range sessions { for _, s := range sessions {
events = append(events, &EventServerMessageSessionEntry{ entry := &EventServerMessageSessionEntry{
SessionId: s.PublicId(), SessionId: s.PublicId(),
UserId: s.UserId(), UserId: s.UserId(),
User: s.UserData(), User: s.UserData(),
}) }
if s, ok := s.(*ClientSession); ok {
entry.RoomSessionId = s.RoomSessionId()
}
events = append(events, entry)
} }
msg := &ServerMessage{ msg := &ServerMessage{
Type: "event", Type: "event",

View File

@ -439,6 +439,9 @@ func (r *Room) PublishSessionJoined(session Session, sessionData *RoomSessionDat
}, },
}, },
} }
if session, ok := session.(*ClientSession); ok {
message.Event.Join[0].RoomSessionId = session.RoomSessionId()
}
if err := r.publish(message); err != nil { if err := r.publish(message); err != nil {
log.Printf("Could not publish session joined message in room %s: %s", r.Id(), err) log.Printf("Could not publish session joined message in room %s: %s", r.Id(), err)
} }

View File

@ -397,6 +397,8 @@ func TestRoom_RoomSessionData(t *testing.T) {
t.Error(err) t.Error(err)
} else if err := client.checkMessageJoinedSession(message, hello.Hello.SessionId, expected); err != nil { } else if err := client.checkMessageJoinedSession(message, hello.Hello.SessionId, expected); err != nil {
t.Error(err) t.Error(err)
} else if message.Event.Join[0].RoomSessionId != roomId+"-"+hello.Hello.SessionId {
t.Errorf("Expected join room session id %s, got %+v", roomId+"-"+hello.Hello.SessionId, message.Event.Join[0])
} }
session := hub.GetSessionByPublicId(hello.Hello.SessionId) session := hub.GetSessionByPublicId(hello.Hello.SessionId)