Participant events
The Vivox SDK posts information about individual participants in a channel that is visible to all other participants. This includes the following information:
- When a user joins a channel
- When a user leaves a channel
- When there is an important change in user state, such as whether the user is speaking or typing
Handling participant events is optional. If there is no visualization of user state (for example, displaying who has voice enabled), then the game can ignore these events.
To provide a visualization of user state information, a game must handle the following messages:
vx_evt_participant_added
vx_evt_participant_removed
vx_evt_participant_updated
The following code displays an example of how to handle these messages:
void HandleParticipantAddedEvent(vx_evt_participant_added *evt)
{
printf("User %s joined %s\n", evt->encoded_uri_with_tag, evt->session_handle);
}
void HandleParticipantRemovedEvent(vx_evt_participant_removed *evt)
{
printf("User %s left %s\n", evt->encoded_uri_with_tag, evt->session_handle);
}
void HandleParticipantUpdatedEvent(vx_evt_participant_updated *evt)
{
printf("User %s %s speaking to %s\n", evt->encoded_uri_with_tag,evt->is_speaking ? "is" : "is not", evt->session_handle);
}
When keeping track of participant state, it is important to use the encoded_uri_with_tag
field as the unique identifier of the participant. This allows the game to distinguish between users who have left a channel and users who have rejoined a channel.
Note: Use the is_current_user
field to distinguish between events that pertain to you from events that pertain to other users.