Skip to content

Add support for server-side move_participant API (Protocol v16+) #795

@RibalTeeny

Description

@RibalTeeny

When attempting to move a participant from one room to another using the server-side move_participant API (from the Python server SDK), the request fails if the participant is on the latest LiveKit Android SDK.

Server-side Code (Python):

await api.room.move_participant(
    api.MoveParticipantRequest(
        room=self.supervisor_room.name,
        identity=_human_identity,
        destination_room=self.customer_room.name,
    )
)

Error Received:

livekit.api.twirp_client.TwirpError: TwirpError(code=unknown, message=participant client version does not support moving, status=500)

Analysis:

After investigating the LiveKit server (Go) codebase, the reason for this error is clear. The server checks the client's protocol version before allowing a move.

In livekit/pkg/rtc/types/protocol_version.go:

func (v ProtocolVersion) SupportsMoving() bool {
	return v > 15
}

And in livekit/pkg/rtc/participant.go:

var (
	ErrMoveOldClientVersion = errors.New("participant client version does not support moving")
)
...
func (p *ParticipantImpl) SupportsMoving() error {
	if !p.ProtocolVersion().SupportsMoving() {
		return ErrMoveOldClientVersion
	}
...
}

This error indicates that the Android client is reporting a protocol version of 15 or lower, even when using the latest available SDK release. This suggests the Android SDK has not yet implemented support for this server-side feature.
It seems like the latest ProtocolVersion available in the Android SDK is v13. (client-sdk-android/livekit-android-sdk/src/main/java/io/livekit/android/room/SignalClient.kt)

Feature request:
Could the Android SDK be updated to support the move_participant API? This would involve implementing the necessary client-side logic and bumping its reported protocol version to 16 (or higher) to be compatible with the server's check.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions