mirror of
https://github.com/strukturag/nextcloud-spreed-signaling
synced 2026-03-14 14:35:44 +01:00
Include client features in "join" events.
This commit is contained in:
parent
18c3bb53f4
commit
70de43cdae
4 changed files with 52 additions and 1 deletions
|
|
@ -531,6 +531,7 @@ const (
|
|||
ServerFeatureDialout = "dialout"
|
||||
ServerFeatureFederation = "federation"
|
||||
ServerFeatureRecipientCall = "recipient-call"
|
||||
ServerFeatureJoinFeatures = "join-features"
|
||||
|
||||
// Features to send to internal clients only.
|
||||
ServerFeatureInternalVirtualSessions = "virtual-sessions"
|
||||
|
|
@ -551,6 +552,7 @@ var (
|
|||
ServerFeatureDialout,
|
||||
ServerFeatureFederation,
|
||||
ServerFeatureRecipientCall,
|
||||
ServerFeatureJoinFeatures,
|
||||
}
|
||||
DefaultFeaturesInternal = []string{
|
||||
ServerFeatureInternalVirtualSessions,
|
||||
|
|
@ -562,6 +564,7 @@ var (
|
|||
ServerFeatureDialout,
|
||||
ServerFeatureFederation,
|
||||
ServerFeatureRecipientCall,
|
||||
ServerFeatureJoinFeatures,
|
||||
}
|
||||
DefaultWelcomeFeatures = []string{
|
||||
ServerFeatureAudioVideoPermissions,
|
||||
|
|
@ -574,6 +577,7 @@ var (
|
|||
ServerFeatureDialout,
|
||||
ServerFeatureFederation,
|
||||
ServerFeatureRecipientCall,
|
||||
ServerFeatureJoinFeatures,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
@ -1068,6 +1072,7 @@ func (m *EventServerMessage) String() string {
|
|||
type EventServerMessageSessionEntry struct {
|
||||
SessionId string `json:"sessionid"`
|
||||
UserId string `json:"userid"`
|
||||
Features []string `json:"features,omitempty"`
|
||||
User json.RawMessage `json:"user,omitempty"`
|
||||
RoomSessionId string `json:"roomsessionid,omitempty"`
|
||||
Federated bool `json:"federated,omitempty"`
|
||||
|
|
@ -1077,6 +1082,7 @@ func (e *EventServerMessageSessionEntry) Clone() *EventServerMessageSessionEntry
|
|||
return &EventServerMessageSessionEntry{
|
||||
SessionId: e.SessionId,
|
||||
UserId: e.UserId,
|
||||
Features: e.Features,
|
||||
User: e.User,
|
||||
RoomSessionId: e.RoomSessionId,
|
||||
Federated: e.Federated,
|
||||
|
|
|
|||
2
room.go
2
room.go
|
|
@ -372,6 +372,7 @@ func (r *Room) notifySessionJoined(sessionId string) {
|
|||
User: s.UserData(),
|
||||
}
|
||||
if s, ok := s.(*ClientSession); ok {
|
||||
entry.Features = s.GetFeatures()
|
||||
entry.RoomSessionId = s.RoomSessionId()
|
||||
entry.Federated = s.ClientType() == HelloClientTypeFederation
|
||||
}
|
||||
|
|
@ -551,6 +552,7 @@ func (r *Room) PublishSessionJoined(session Session, sessionData *RoomSessionDat
|
|||
},
|
||||
}
|
||||
if session, ok := session.(*ClientSession); ok {
|
||||
message.Event.Join[0].Features = session.GetFeatures()
|
||||
message.Event.Join[0].RoomSessionId = session.RoomSessionId()
|
||||
message.Event.Join[0].Federated = session.ClientType() == HelloClientTypeFederation
|
||||
}
|
||||
|
|
|
|||
39
room_test.go
39
room_test.go
|
|
@ -292,6 +292,45 @@ loop:
|
|||
assert.NoError(err)
|
||||
}
|
||||
|
||||
func TestRoom_RoomJoinFeatures(t *testing.T) {
|
||||
t.Parallel()
|
||||
CatchLogForTest(t)
|
||||
require := require.New(t)
|
||||
assert := assert.New(t)
|
||||
hub, _, router, server := CreateHubForTest(t)
|
||||
|
||||
config, err := getTestConfig(server)
|
||||
require.NoError(err)
|
||||
b, err := NewBackendServer(config, hub, "no-version")
|
||||
require.NoError(err)
|
||||
require.NoError(b.Start(router))
|
||||
|
||||
client := NewTestClient(t, server, hub)
|
||||
defer client.CloseWithBye()
|
||||
|
||||
features := []string{"one", "two", "three"}
|
||||
require.NoError(client.SendHelloClientWithFeatures(testDefaultUserId, features))
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), testTimeout)
|
||||
defer cancel()
|
||||
|
||||
hello, err := client.RunUntilHello(ctx)
|
||||
require.NoError(err)
|
||||
|
||||
// Join room by id.
|
||||
roomId := "test-room"
|
||||
roomMsg, err := client.JoinRoom(ctx, roomId)
|
||||
require.NoError(err)
|
||||
require.Equal(roomId, roomMsg.Room.RoomId)
|
||||
|
||||
if message, err := client.RunUntilMessage(ctx); assert.NoError(err) {
|
||||
if assert.NoError(client.checkMessageJoinedSession(message, hello.Hello.SessionId, testDefaultUserId)) {
|
||||
assert.Equal(roomId+"-"+hello.Hello.SessionId, message.Event.Join[0].RoomSessionId)
|
||||
assert.Equal(features, message.Event.Join[0].Features)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestRoom_RoomSessionData(t *testing.T) {
|
||||
t.Parallel()
|
||||
CatchLogForTest(t)
|
||||
|
|
|
|||
|
|
@ -456,10 +456,14 @@ func (c *TestClient) SendHelloResume(resumeId string) error {
|
|||
}
|
||||
|
||||
func (c *TestClient) SendHelloClient(userid string) error {
|
||||
return c.SendHelloClientWithFeatures(userid, nil)
|
||||
}
|
||||
|
||||
func (c *TestClient) SendHelloClientWithFeatures(userid string, features []string) error {
|
||||
params := TestBackendClientAuthParams{
|
||||
UserId: userid,
|
||||
}
|
||||
return c.SendHelloParams(c.server.URL, HelloVersionV1, "client", nil, params)
|
||||
return c.SendHelloParams(c.server.URL, HelloVersionV1, "client", features, params)
|
||||
}
|
||||
|
||||
func (c *TestClient) SendHelloInternal() error {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue