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)の環境を利用し、簡易ビデオチャットを作成する流れはこちらをご参考ください。
- クライアント側の処理を呼び出す
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に新たなクライアント名をセットしておけば、全クライアントにそのクライアント名が通知することができます。
チャットシステムなどに応用できますね。 - 二重ログインをチェック
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("エラー"); } }
ポイント
サンプル2の「接続クライアントを表示する」と似ていますが、こちらは同じユーザが接続していないかをチェックする処理になります。
まずクライアント側がmain.ascのmultiloginchk関数をcallします。
main.asc側ではmultiloginchk内でクライアント全員に対し、引数usernameと同じ名称でないかをチェックします。同じ場合は変数bのカウントを1つ増やします。
クライアント側で変数bの値を引数checkresultとして受取り、1より大きい場合(複数ログインと判断し)、エラーとします。
まとめ
5つのサンプルをご紹介してきましたが、いかがでしたでしょうか。
main.ascファイルを使うことで、flash media serverの使い途に幅がでてきますので、ぜひ活用してみてください。