In Flash Media Server Come identificare il client disconnesso a causa del taglio di alimentazione?

StackOverflow https://stackoverflow.com/questions/19836084

Domanda

chiunque per favore aiutatemi, come posso trovare su flash media server che il client si è disconnesso (a causa dell'energia tagliata non manualmente). Il mio codice FMS è il prossimo

application.allowDebug = true;
application.onAppStart = function(){
    application.users_so = SharedObject.get("SO");  
}
application.onConnect = function(client,Obj){
    client.name = Obj.name;
    application.acceptConnection(client);
    application.users_so.setProperty(client.name,Obj);
    trace("one user is now connected.");
}
application.onDisconnect = function(client){
    trace(" user lost connection.");
}

Se il client chiude manualmente l'applicazione, allora ondisconnect Il gestore di eventi viene chiamato ma se a causa dell'alimentazione o del cliente disabilita la connessione netta non si chiama.

Per favore aiutami in questo.

È stato utile?

Soluzione

Fino ad ora non conosco il motivo per cui ondisconnect Il gestore di eventi non funziona quando l'utente si disconnette a causa del taglio dell'alimentazione o disabilitando la connessione della rete. Ma ho trovato un altro modo per identificarlo. Solo è il codice per accettare la concorrenza del client e poi dopo ogni 15 secondi che controllo se il client è ancora attivo (dopo aver perso la connessione della rete), quindi scollegarlo e otteniamo "netconnection.connect .Closed "Sul lato client.

    application.allowDebug = true;
    application.onAppStart = function(){
        application.users_so = SharedObject.get("SO");  
    }
    application.onConnect = function(client,Obj){
        client.name = Obj.name;
        application.acceptConnection(client);
        application.users_so.setProperty(client.name,Obj);
        client.interval = setInterval(checkLive, 15000, client);
        trace("one user is now connected.");
    }
    function checkLive(client){
      var stats = client.getStats();
      trace('Measured timeout: ' + stats['ping_rtt']);
     if(stats){

          if(stats['ping-rtt']>10){
                     trace('client '+ client.name +'is still connected.');
            application.disconnect(client);
          }
      }


    }
        application.onDisconnect = function(client){
            clearInterval(client.interval);
            trace(" user lost connection.");
        }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top