ApplicationAdapterにはいくつかイベントがあります。
また、接続を処理するのに使うインターフェイスもいくつかあります。
まず使うインターフェイスから
import org.red5.server.api.Red5;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IScope;
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
このあたりのクラス、インターフェイスを使えるようにしておけばいいと思います。
import org.red5.server.api.Red5;
これは、接続情報を取得するときにあとで使います。
import org.red5.server.adapter.ApplicationAdapter;
これはaddNameでいうところのApplicationがextendするクラスです。
Javaがこれを認識できなかったらエラーになります。
import org.red5.server.api.IScope;
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
接続が持つスコープ、クライアント、コネクションです。
これらは、互いに参照しあったりすることができます。
たとえば同じスコープにある接続を全部取得する、等することができます。
さて、イベントですが・・・
package com.appName;
import org.red5.server.api.Red5;
import org.red5.server.adapter.ApplicationAdapter;
import org.red5.server.api.IScope;
import org.red5.server.api.IClient;
import org.red5.server.api.IConnection;
import org.red5.server.api.service.IServiceCapableConnection;
public class Application extends ApplicationAdapter
{
public boolean appStart(IScope scope)
{
System.out.println("appStart");
return super.appStart(scope);
}
public void appStop(IScope scope)
{
super.appStop(scope);
System.out.println("appStop");
}
public boolean appConnect(IConnection conn, Object[] params)
{
System.out.println("appConnect");
return super.appConnect(conn, params);
}
public void appDisconnect(IConnection conn)
{
super.appDisconnect(conn);
System.out.println("appDisconnect");
}
public String OriginalFunc(IConnection conn, String []params)
{
System.out.println("OriginalFunc");
return "Return Val";
}
}
public boolean appStart(IScope scope)
ます、これは、アプリケーションが始まったときの処理です。
public void appStop(IScope scope)
これはアプリケーションが終わったときの処理
public boolean appConnect(IConnection conn, Object[] params)
これは誰かが接続したときの処理
public void appDisconnect(IConnection conn)
これは誰かが切断したときの処理
public String OriginalFunc(IConnection conn, String param)
public String OriginalFunc(String []params)
最後にSWFプレイヤーなどからサーバーサイトの関数が呼ばれたときのオリジナル関数です。
渡される引数が1つの場合は上のやり方で問題ないのですが複数の引数のやり取りをしたい場合は
下の方法を使います。
なお、StringではなくObjectでも大丈夫です。
また、下の場合は接続情報が抜けているのですが
import org.red5.server.api.Red5;
を使うことで取得することができます。
public String OriginalFunc(String []params)
{
IConnection conn = (IConnection)Red5.getConnectionLocal();
}
これ以外にも、ストリーミングを開始したイベントや終了イベント
ルームと呼ばれる接続を開始したタイミング等、いろいろあります。
最終更新:2010年01月17日 21:47