Browse Source

Add Room document and send it back in response to room joins.

pull/112/head
Lance Cooper 11 years ago committed by Simon Eisenmann
parent
commit
74602d43d5
  1. 20
      doc/CHANNELING-API.txt
  2. 6
      src/app/spreed-webrtc-server/channeling.go
  3. 6
      src/app/spreed-webrtc-server/channelling_api.go
  4. 8
      src/app/spreed-webrtc-server/channelling_api_test.go

20
doc/CHANNELING-API.txt

@ -179,10 +179,10 @@ Special purpose documents for channling @@ -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 @@ -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

6
src/app/spreed-webrtc-server/channeling.go

@ -35,9 +35,15 @@ type DataHello struct { @@ -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

6
src/app/spreed-webrtc-server/channelling_api.go

@ -92,7 +92,11 @@ func (api *channellingAPI) OnIncoming(c ResponseSender, session *Session, msg *D @@ -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 {

8
src/app/spreed-webrtc-server/channelling_api_test.go

@ -140,11 +140,11 @@ func Test_ChannellingAPI_OnIncoming_HelloMessage_DoesNotJoinIfNotPermitted(t *te @@ -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 @@ -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)
}

Loading…
Cancel
Save