Flash Media Serverでは、停止したクライアントが停止されていることを識別する方法は?

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

質問

誰でも助けてください、クライアントが切断されたことをフラッシュメディアサーバーで見つけることができますか (手動ではなく停止したため). 。私のFMSコードは次です

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

クライアントがアプリケーションを手動で閉じる場合 ondisconnect イベントハンドラーは呼び出されますが、停電またはクライアントがネット接続を無効にする場合は呼び出されません。

これで私を助けてください。

役に立ちましたか?

解決

今まで私は理由を知りません ondisconnect イベントハンドラーは、停電またはネット接続を無効にしてユーザーが切断されたときに機能しません。しかし、私はそれを識別する別の方法を見つけました。Belowはクライアントの接続を受け入れるためのコードであり、15秒ごとにクライアントがまだアクティブであるかどうかを確認します(ネット接続を失った後)。 。クライアント側で。

    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.");
        }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top