En Flash Media Server, ¿cómo identificar el cliente desconectado debido al corte de energía?

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

Pregunta

Cualquiera por favor ayuda, ¿cómo puedo encontrar en Flash Media Server que el cliente se desconecte? (Debido a la energía cortada no manualmente). Mi código FMS es el siguiente

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

Si el cliente cierra manualmente la aplicación, entonces endisconnect Se llama al controlador de eventos, pero si se debe al corte de energía o al cliente deshabilitar la conexión de red, no se llama.

Por favor, ayúdame en esto.

¿Fue útil?

Solución

Hasta ahora no sé la razón por la cual endisconnect El controlador de eventos no funciona cuando el usuario se desconecta debido al corte de energía o al deshabilitar la conexión neta. Pero encontré otra forma de identificarlo. Below es el código para aceptar la conección del cliente y luego, después de cada 15 segundos, estoy comprobando si el cliente todavía está activo (después de perder la conexión de red), lo desconecte y obtenemos "netconnection.connect. .Clased "En el lado del cliente.

    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.");
        }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top