diff --git a/doc/CHANNELING-API.txt b/doc/CHANNELING-API.txt index 968dcafc..6eb7f96f 100644 --- a/doc/CHANNELING-API.txt +++ b/doc/CHANNELING-API.txt @@ -179,10 +179,10 @@ Special purpose documents for channling Welcome { - Type: "Welcome", - Welcome: { - Users: [ - ], + "Type": "Welcome", + "Welcome": { + "Room": {...}, + "Users": [] } } @@ -191,9 +191,21 @@ Special purpose documents for channling Keys under Welcome: + Room: Contains the current state of the room, see the description of + the Room document for more details. Users: Contains the user list for the room, see the description of the Users document for more details. + Room + + { + "Type": "Room", + "Name": "room-name-here" + } + + The Room document is sent in responses to initial joins or when room properties + have been updated. + Peer connection documents Offer diff --git a/src/app/spreed-webrtc-server/channeling.go b/src/app/spreed-webrtc-server/channeling.go index 076180a9..bf9b5ac9 100644 --- a/src/app/spreed-webrtc-server/channeling.go +++ b/src/app/spreed-webrtc-server/channeling.go @@ -35,9 +35,15 @@ type DataHello struct { type DataWelcome struct { Type string + Room *DataRoom Users []*DataSession } +type DataRoom struct { + Type string + Name string +} + type DataOffer struct { Type string To string diff --git a/src/app/spreed-webrtc-server/channelling_api.go b/src/app/spreed-webrtc-server/channelling_api.go index 12a19a65..fbe72cb1 100644 --- a/src/app/spreed-webrtc-server/channelling_api.go +++ b/src/app/spreed-webrtc-server/channelling_api.go @@ -92,7 +92,11 @@ func (api *channellingAPI) OnIncoming(c ResponseSender, session *Session, msg *D session.Roomid = msg.Hello.Id api.JoinRoom(session, c) if msg.Iid != "" { - c.Reply(msg.Iid, &DataWelcome{Type: "Welcome", Users: api.RoomUsers(session)}) + c.Reply(msg.Iid, &DataWelcome{ + Type: "Welcome", + Room: &DataRoom{Name: msg.Hello.Id}, + Users: api.RoomUsers(session), + }) } api.Broadcast(session, session.DataSessionJoined()) } else { diff --git a/src/app/spreed-webrtc-server/channelling_api_test.go b/src/app/spreed-webrtc-server/channelling_api_test.go index 25f1c650..0fe0e507 100644 --- a/src/app/spreed-webrtc-server/channelling_api_test.go +++ b/src/app/spreed-webrtc-server/channelling_api_test.go @@ -140,11 +140,11 @@ func Test_ChannellingAPI_OnIncoming_HelloMessage_DoesNotJoinIfNotPermitted(t *te } func Test_ChannellingAPI_OnIncoming_HelloMessageWithAnIid_RespondsWithAWelcome(t *testing.T) { - iid := "foo" + iid, roomID := "foo", "a-room" api, client, session, roomManager := NewTestChannellingAPI() roomManager.roomUsers = []*DataSession{&DataSession{}} - api.OnIncoming(client, session, &DataIncoming{Type: "Hello", Iid: iid, Hello: &DataHello{}}) + api.OnIncoming(client, session, &DataIncoming{Type: "Hello", Iid: iid, Hello: &DataHello{Id: roomID}}) msg, ok := client.replies[iid] if !ok { @@ -160,6 +160,10 @@ func Test_ChannellingAPI_OnIncoming_HelloMessageWithAnIid_RespondsWithAWelcome(t t.Error("Message did not have the correct type") } + if welcome.Room == nil || welcome.Room.Name != roomID { + t.Errorf("Expected room with name %v, but got %#v", roomID, welcome.Room) + } + if len(welcome.Users) != len(roomManager.roomUsers) { t.Errorf("Expected to get users %#v, but was %#v", roomManager.roomUsers, welcome.Users) }