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側
1234var
a;
for
(a=
0
; a<application.clients.length; ++a){
application.clients[a].call("calledByServerSide",
null
, sendtext);
}
クライアント側
1234public
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側
1234567891011Client.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;
};
クライアント側
123456789var
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の使い途に幅がでてきますので、ぜひ活用してみてください。