In Flash Media Server identifizieren Sie den Client, der aufgrund von Stromausfall getrennt ist?

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

Frage

Jeder, bitte helfen Sie, wie kann ich auf Flash Media Server, den Client unterbrochen, finde (aufgrund des Stromausschnitts nicht manuell). Mein FMS -Code ist als nächstes

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.");
}

Wenn der Kunde die Anwendung manuell schließen, dann schließen Sie dann Ondisconnect Der Ereignishandler wird aufgerufen, aber wenn es aufgrund von Stromausfällen oder Kunden die Nettoverbindung deaktiviert, wird er nicht aufgerufen.

Bitte helfen Sie mir dabei.

War es hilfreich?

Lösung

Bis jetzt weiß ich nicht den Grund warum Ondisconnect Der Ereignishandler funktioniert nicht, wenn der Benutzer aufgrund von Stromausfall oder durch Deaktivieren der Nettoverbindung trennen. Aber ich fand einen anderen Weg, um es zu identifizieren. Below ist der Code für die Akzeptanz der Client-Konektion. Nach jeder 15 Sekunden prüfe ich, ob der Client noch aktiv ist (nachdem ich die Nettoverbindung verliert habe), dann trennen Sie ihn und wir erhalten "netconnection.connect .Cloded "auf der Clientseite.

    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.");
        }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top