Découvrez les différents statuts de connexion aux canaux, les raisons de leurs changements et la manière de gérer chaque transition.
Présentation de la fonctionnalité
Dans les scénarios audio et vidéo en temps réel, la connexion entre le client et le serveur évolue au gré des entrées et des sorties des utilisateurs dans les canaux. Elle peut également changer en raison de problèmes réseau entraînant une reconnexion ou une déconnexion. Une gestion appropriée de ces états de connexion est indispensable pour garantir une expérience utilisateur stable et fiable.
Fonctionnement
Statut de connexion
Lorsque le statut de connexion change, le SDK ARTC déclenche le rappel onConnectionStatusChange. Le schéma ci-dessous illustre les différents statuts de connexion et leurs transitions lors de l'entrée et de la sortie des utilisateurs des canaux.
Reconnexion automatique
Pendant un appel, si la connexion est interrompue en raison de problèmes réseau, le SDK tente automatiquement de se reconnecter. Le schéma suivant présente les rappels reçus par l'utilisateur A et l'utilisateur B lorsque l'utilisateur A rejoint un canal où se trouve l'utilisateur B, perd la connectivité, tente une reconnexion automatique, puis échoue finalement à se reconnecter.
À T0 : L'utilisateur A initie une requête
joinChannel.À T1 : L'utilisateur A rejoint le canal avec succès et reçoit les rappels
onJoinChannelResult(result=0)etonConnectionStatusChange.À T2 : L'utilisateur B détecte que l'utilisateur A a rejoint le canal et reçoit le rappel
onRemoteUserOnLineNotify.À T3 : La connexion de l'utilisateur A est perdue en raison d'une déconnexion du réseau client ou pour d'autres raisons.
À T4 : Le SDK de l'utilisateur A détecte la déconnexion ou cesse de recevoir des données du serveur. Il lance une reconnexion automatique et l'utilisateur A reçoit le rappel
onConnectionStatusChange.À T5 : Après plusieurs tentatives de réessai effectuées dans un délai de 100 secondes, le SDK ne parvient toujours pas à rejoindre le canal et arrête ses tentatives. Il envoie le rappel
onConnectionStatusChangeà l'utilisateur A. Ce dernier doit alors quitter le canal actuel, vérifier la connectivité du réseau local et rejoindre à nouveau le canal une fois le réseau rétabli.
Exemple de code
Android
onConnectionStatusChange - Rappel de changement de statut de connexion réseau
@Override
public void onConnectionStatusChange(AliRtcEngine.AliRtcConnectionStatus status, AliRtcEngine.AliRtcConnectionStatusChangeReason reason) {
super.onConnectionStatusChange(status, reason);
Log.e(TAG, "onConnectionStatusChange.");
ThreadUtils.runOnUiThread(new Runnable() {
@Override
public void run() {
if (mLogView != null) {
mLogView.logI("Network connection changed to: " + status + ", reason: " + reason);
}
}
});
}
IOS
onConnectionStatusChange - Rappel de changement de statut de connexion réseau
/**
* @brief Channel connection status change callback
* @param status Current status value, refer to AliRtcConnectionStatus enumeration for corresponding values
* @param reason Specific reason for the status change, refer to AliRtcConnectionStatusChangeReason enumeration for corresponding values
*/
- (void)onConnectionStatusChange:(AliRtcConnectionStatus)status reason:(AliRtcConnectionStatusChangeReason)reason{
NSString *stateStr = [NSString stringWithFormat:@"\nNetwork status: %@ status: %ld Reason: %@ reason: %ld\n",[self callbackNetstatus:status], (long)status,[self callbackNetstatusReason:reason], (long)reason];
MyLog(@"%@", stateStr);
}
Windows
OnConnectionStatusChange - Rappel de changement de statut de connexion réseau
void AliSDKEventListener::OnConnectionStatusChange(int status, int reason)
{
if (win_rtc_listener_)
{
win_rtc_listener_->OnConnectionStatusChange(status, reason);
}
}
Description des statuts
Statut de connexion
|
Statut de connexion |
Description |
|
Init |
Statut initial. Se produit avant l'appel à |
|
Connecting |
Statut transitoire après l'appel à la méthode |
|
Connected |
L'application a rejoint le canal avec succès. Le SDK déclenche également le rappel |
|
Disconnected |
Se produit après l'appel à |
|
Reconnecting |
La connexion a été interrompue. Le SDK tente automatiquement de se reconnecter. Si la reconnexion réussit, le SDK déclenche onConnectionStatusChange (AliRtcConnectionStatusConnected, AliRtcConnectionChangedSignalingJoinChannelSuccess) |
|
Failed |
Échec de la connexion. Le SDK n'a pas pu rejoindre le canal dans un délai de 100 secondes et a arrêté les tentatives de reconnexion. L'utilisateur doit appeler |
Description des raisons de statut
|
Statut de connexion (status) |
Description de la raison du statut (reason) |
|
Init |
Aucune raison, statut initial. |
|
Connecting |
Connecting : Rejoindre le canal. |
|
Connected |
JoinChannelSuccess : Canal rejoint avec succès. |
|
Disconnected |
LeaveRoom : L'utilisateur a quitté le canal volontairement. |
|
Reconnecting |
|
|
Failed |
JoinChannelFailure : Échec de la jonction ou de la reconnexion au canal, potentiellement dû à une déconnexion réseau persistante ou à un jeton non valide. |