ADOBE® MEDIA SERVER 5.0.3
デベロッパーズガイド
![]() ![]() ![]() |
翻訳:株式会社サムライズ |
---|
注意
Adobe Media Server® バージョン 5についての本ドキュメントは第三者によって翻訳されたものであり、Adobe Systems Incorporated(アドビ システムズ社)は本翻訳物の正確性や完全性を査閲していません。
接続の管理
クライアントとサーバー間で接続が確立しても、様々な理由で切断されることがあります。例えば、ネットワークに障害が発生したり、サーバーが停止したりすることがあります。サーバーまたはクライアントによって接続が閉じられることもあります。接続状態に何らかの変更が発生すると、netStatusイベントが発生します。このイベントには、どのような変更かを示す codeと levelの 2つのプロパティが含まれます。次の表は、codeと levelの組み合わせの一例です。
code プロパティ |
レベル |
意味 |
NetConnection.Connect.Success |
status |
接続が正常に確立されました。 |
netStatus イベントで返される code と level のすべての値の完全なリストについては、『ActionScript 3.0 リファレンスガイド』の「NetStatus.info」を参照してください。
このイベントが返されると、event.info.codeと event.info.levelを使用して、接続のコードとレベルにアクセスすることができます。また、NetConnection.connectedプロパティを参照することによって、現在でも接続が存在しているかどうかを確認することができます(このプロパティは trueまたは falseのいずれかの値をとります)。接続を確立できない場合、または接続が利用できなくなった場合、アプリケーションクライアントで何らかの対処を行う必要があります。
アプリケーションは、接続を試みるクライアントを管理する main.asc または applicationName.asc ファイルでサーバーサイドコードを持つことができます。
サーバーサイドコードは、サーバー側で個々のクライアントを表す Clientオブジェクトと、アプリケーションインスタンスの管理に使用する applicationオブジェクトにアクセスします。サーバーのコードでは、サーバーサイド ActionScriptとサーバーサイド情報オブジェクトを使用します(『サーバーサイド ActionScript リファレンスガイド』を参照してください)。
アプリケーションは、サーバーサイドコードの中で、クライアントからの接続を受諾または拒否したり、アプリケーションをシャットダウンしたり、接続を管理するためのその他のタスクを実行したりすることができます。クライアントが接続するときに、アプリケーションは application.onConnectイベントを受け取ります。同様に、クライアントが切断するときに、アプリケーションはapplication.onDisconnect イベントを受け取ります。
サーバーで接続を管理する場合、サーバーサイドActionScriptの中の application.onConnect()と application.onDisconnect()
が処理の開始点となります。
関連項目
この例では、アプリケーションクライアントとサーバーサイドコードの両方で接続を管理する方法を示します。
認証コードを書く
クライアントコードの中では、特定の接続コードを確認し、それらを処理する必要があります。ライブストリームの作成や、記録済みストリームの再生は、クライアントが NetConnection.Connect.Success を受け取ってからのみ行います。
注意:SimpleConnectManage サンプルの SimpleConnectManage.as ファイルを参照してください。
1 NetConnection オブジェクトを作成し、connect() メソッドを呼び出して、サーバーに接続します。
2 netStatusイベントハンドラーを記述します。この中で、特定の接続コードを確認し、それぞれの場合の処理を実行します。
public function netStatusHandler(event:NetStatusEvent):void {
trace("connected is: " + nc.connected );
trace("event.info.level: " + event.info.level);
trace("event.info.code: " + event.info.code);
switch (event.info.code)
{
case "NetConnection.Connect.Success":
trace("Congratulations! you're connected");
// create live streams
// play recorded streams
break;
case "NetConnection.Connect.Rejected":
trace ("Oops! the connection was rejected");
// try to connect again break;
case "NetConnection.Connect.Failed":
trace("The server may be down or unreachable");
// display a message for the user break;
case "NetConnection.Connect.Closed":
trace("The connection was closed successfully - goodbye");
// display a reconnect button break;
}
}
コードの実行
注意:ここの手順は、Flash ユーザーインターフェイスを使用しないすべての ActionScript 3.0 の例に該当します。これらの ActionScript 3.0 の例は、参考用として提供されています。
1 クライアントサイドコードを参照して、クライアントがどのアプリケーションに接続するのかを確認します。
nc.connect("rtmp://localhost/HelloServer");
2 applications ディレクトリ内にアプリケーションインスタンスのディレクトリを作成して、サーバーにアプリケーションを登録します。以下にその例を示します。
rootinstall/applications/HelloServer
3 (オプション)または、サーバーに登録されているアプリケーションを使用する場合は、connect() の呼び出しで使用される URI を変更します。
nc.connect("rtmp://localhost/MyApplication");
4 Flash Builder で、SimpleConnectManage という名前の ActionScript プロジェクトを作成します (「ファイル」> 「新規」> 「ActionScript プロジェクト」の順に選択し、ウィザードに従います)。
5 プロジェクトに SimpleConnectManage サンプルファイルを追加します。
6 実行/デバッグを選択します。デバッグウィンドウで、「プロジェクト」に SimpleConnectManage と入力し、「アプリケーションファイル」に SimpleConnectManage.as と入力します。「デバッグ」をクリックします。
7 開かれている空のアプリケーションウィンドウを閉じ、Flash Builder に戻ります。コンソールウィンドウ内のメッセージを確認します。
接続が成功した場合、次のような出力が表示されます。
connected is: true
event.info.level: status
event.info.code: NetConnection.Connect.Success
Congratulations! you're connected
[SWF] C:\samples\SimpleConnectManage\bin\SimpleConnectManage-debug.swf - 2,377 bytes after decompression
サーバーのバージョン番号を取得するには、ActionScript 3.0 NetStatusEvent を使用します。サーバーのバージョン番号は、event.info.data.version プロパティにあります。次のコードは、VOD サービスを接続し、サーバーのバージョン番号を出力します。
import flash.net.NetConnection; import flash.events.NetStatusEvent; import flash.events.AsyncErrorEvent;
var nc:NetConnection = new NetConnection();
nc.client = this;
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
nc.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
function netStatusHandler(event:NetStatusEvent):void{
trace("AdobeMedia Server version: " + event.info.data.version);
trace(event.info.code);
}
function asyncErrorHandler(event:AsyncErrorEvent):void{
trace(event);
}
// The vod applicatin expects this function to check bandwidth.
function onBWDone(...data):Number{
return 0;
}
nc.connect("rtmp://localhost/vod");
HelloServerアプリケーションの例の netStatusHandler()関数の内部に次のコード行を追加することもできます。
trace("Adobe Media Server version: " + event.info.data.version);
最終更新日 2013/9/30