Tips

Flash Media Server 4.5 (FMS) ⑩ main.ascサンプル2

Flash Media Server 4.5 (FMS) ⑩ main.ascサンプル2

前回「Flash Media Server 4.5 (FMS)⑨ main.ascサンプル」に続き、サンプル処理をご紹介します。

※サンプルの1~3はこちらをご参考ください。
※FlashMediaServer4.5(FMS)の環境を利用し、簡易ビデオチャットを作成する流れはこちらをご参考ください。

  1. クライアント側の処理を呼び出す

    main.asc側

    var a;
    for (a=0; a<application.clients.length; ++a){
     application.clients[a].call("calledByServerSide", null, sendtext);
    }
    

    クライアント側

    public function calledByServerSide(r_text:String):void
    {
     trace("r_text : "+ r_text);
    }
    

    ポイント

    main.asc側で接続しているクライアント全員に対してfor文で処理を実行しています。
    for文内の処理は、クライアントサイドのcalledByServerSide関数を呼び出すことです。
    引数としてsendtextという変数の値を渡しています。

    クライアント側ではcalledByServerSide関数を定義しています。
    関数の処理内容は、引数r_text(main.ascから送られたsendtext)のtraceです。

    たとえば、新たに接続するクライアントがmain.ascの関数を呼び出し(前回記事参照)、
    そのmain.ascの関数内で上記処理を記述するとします。
    sendtextに新たなクライアント名をセットしておけば、全クライアントにそのクライアント名が通知することができます。
    チャットシステムなどに応用できますね。

  2. 二重ログインをチェック

    main.asc側

    Client.prototype.multiloginchk = function(username) {
     var a, b, c;
     b = 0;
     c = application.clients;
     for(a=0; a<c.length; ++a){
      if(c[a].pUsername == username){
       b+=1;
      }
     }
     return b;
    };
    

    クライアント側

    var responder:Responder = new Responder(multiLoginCheckResult);
    nc.call("multiloginchk", responder, username);
    
    function multiLoginCheckResult(checkresult:int) {
     trace(checkresult);
     if(checkresult > 1){
      trace("エラー");
     }
    }
    
  3. ポイント

    サンプル2の「接続クライアントを表示する」と似ていますが、こちらは同じユーザが接続していないかをチェックする処理になります。
    まずクライアント側がmain.ascのmultiloginchk関数をcallします。
    main.asc側ではmultiloginchk内でクライアント全員に対し、引数usernameと同じ名称でないかをチェックします。同じ場合は変数bのカウントを1つ増やします。
    クライアント側で変数bの値を引数checkresultとして受取り、1より大きい場合(複数ログインと判断し)、エラーとします。

まとめ

5つのサンプルをご紹介してきましたが、いかがでしたでしょうか。
main.ascファイルを使うことで、flash media serverの使い途に幅がでてきますので、ぜひ活用してみてください。

Linux認定資格 LPICを取るなら・・

Linux資格 「LPIC Lv1」徹底解説 連載目次

Recent News

Recent Tips

Tag Search