Initiate a channel join
How to initiate a channel join request in Vivox.
Read time 1 minuteLast updated 2 days ago
The following code displays an example of how to initiate a channel join:
/* . . . */ChannelId Channel(kDefaultIssuer, "example_channel", kDefaultDomain, ChannelType::NonPositional);IChannelSession &MyChannelSession(MyLoginSession.GetChannelSession(Channel));bool IsAsynchronousConnectCompleted = false;IChannelSession::FOnBeginConnectCompletedDelegate OnBeginConnectCompleted;OnBeginConnectCompleted.BindLambda([this, &IsAsynchronousConnectCompleted, &MyChannelSession](VivoxCoreError Error){ if (VxErrorSuccess == Error) { IsAsynchronousConnectCompleted = true; // This bool is only illustrative. The connect call has completed. }});MyChannelSession.BeginConnect(true, true, true, MyChannelSession.GetConnectToken(kDefaultKey, kDefaultExpiration), OnBeginConnectCompleted);/* . . . */
The IChannelSession::EventChannelStateChanged event runs when a player has completely joined the channel, has the intended audio and text states connected, and there is a fully formed list of channel participants.
- If all states that are attempting to connect to the channel have successfully connected, this event runs with an of
IChannelConnectionState.Connected - If all states have been disconnected from the channel, this event runs with an of
IChannelConnectionState.Disconnected
This event is generated in response to messages from the Vivox network (for example, when a user is forcibly removed from a channel by the game server).void UMyGameClass::OnChannelSessionConnectionStateChanged(const IChannelConnectionState &State){ FString ChannelName(State.ChannelSession().Channel().Name()); if (ConnectionState::Connected == State.State()) { UE_LOG(MyLog, Log, TEXT("Channel %s fully connected\n"), *ChannelName); } else if (ConnectionState::Disconnected == State.State()) { UE_LOG(MyLog, Log, TEXT("Channel %s fully disconnected\n"), *ChannelName); }}