[MY-RS] Attendre que send soit fini avant de disconnect

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Farstone
Messages : 187
Inscription : 04 Déc 2016 09:38

[MY-RS] Attendre que send soit fini avant de disconnect

Message par Farstone » 20 Oct 2017 19:24

Salut, j'ai un soucis quand j'essaie d'envoyer netMsg.conn.Disconnect(); en réponse a un message, c'est pour un système de connexion, j'aimerais juste déconnecter le client si le résultat n'est pas correct.
Voici la méthode appelé par
NetworkServer.RegisterHandler(NL.RequestAuthId, OnServerRequestAuth);

Code : Tout sélectionner

public void OnServerRequestAuth(NetworkMessage netMsg)
        {
            var msg = netMsg.ReadMessage<NL.RequestUserAuth>();
            var result = UserDb.LoginUser(msg.Username, msg.Password, netMsg.conn.connectionId);
            bool send = netMsg.conn.Send(NL.RequestedAuthId, result);
            if (result.resultCode != (int)NL.NetworkMasterServerEvent.AuthSucces)
            {
                netMsg.conn.Disconnect();
            }
        }
        
Mais le client n'a pas le temps de recevoir le message, et le server affiche cette erreur dans la console :

Attempt to send to not connected connection {1}
UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

Failed to send internal buffer channel:0 bytesToSend:7
UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

Send Error: WrongConnection channel:0 bytesToSend:7
UnityEngine.Networking.NetworkIdentity:UNetStaticUpdate()

Et le plus décevant c'est que la fonction Send retourne true au moment ou le message part, pas quand il est reçu.
Comment je peux faire pour attendre que le client est bien reçu le message sans forcément avoir a faire attendre le programme quelques secondes en utilisant yield ?

Répondre

Revenir vers « (C#) CSharp »