HTTPProvider (http://www.wowza.com/forums/content.php?30-httpproviders) を使用して、Wowza モジュールのメソッドを呼び出します。これにより、アプリが HTTP 経由で呼び出すことができる Wowza モジュールの URL が得られます。
たとえば、Wowza モジュールがデフォルトで次のように実行されているとします。
http://localhost:1935.
次のように、VHost.xml に HTTPProvider を追加できます。
<HTTPProvider>
<BaseClass>com.mycompany.wms.module.SomeModule</BaseClass>
<RequestFilters>logout*</RequestFilters>
<AuthenticationMethod>none</AuthenticationMethod>
</HTTPProvider>
これにより、次のような URL を呼び出すことができます。
http://localhost:1935/logout?id=123456789
モジュールの Java コードでは、onHTTPRequest メソッドを作成する HTTProvider2Base を実装する必要があります。クエリ文字列の変数 (この例では ?id=123456789) をメソッドで使用できます。ここからモジュール内のメソッドを呼び出すこともできます。
この呼び出しを使用する Java クラスの例は次のとおりです。
package com.mycompany.wms.module;
import com.wowza.wms.http.HTTProvider2Base;
import com.wowza.wms.http.IHTTPRequest;
import com.wowza.wms.http.IHTTPResponse;
import com.wowza.wms.logging.WMSLogger;
import com.wowza.wms.logging.WMSLoggerFactory;
import com.wowza.wms.vhost.IVHost;
public class SomeModule extends HTTProvider2Base {
public void onHTTPRequest(IVHost vhost, IHTTPRequest req, IHTTPResponse resp) {
//Get the user
String userId = req.getParameter("id");
getLogger().info("Logging out user: " + userId );
logoutUser(userId);
}
private void logoutUser(String userId){
//Do stuff here...
}
private WMSLogger getLogger(){
return WMSLoggerFactory.getLogger(SomeModule.class);
}
}
いくつかの落とし穴:
- onHTTPRequest のスコープはインスタンスの外部にあるように見えるため、モジュールのインスタンス内のプロパティへのアクセスには注意してください。
- 自分のノードを機能させるには、HTTPServerVersion を含む HTTPProvider ノードをコメントアウトする必要がありました。私のバージョンの Wowza では、他のすべての HTTPProvider をオーバーライドしているように見えました。
- また、IDE から実行している Wowza が Visual Studio 経由で URL への呼び出しを取得しないという問題もありました。サービス バージョンに変更を加えると、呼び出しは正常に機能しました。
これを行うために私が作成したアプリは、主にこの記事の会話に基づいています: http://www.wowza.com/forums/content.php?182-HTTPProvider-that-returns-detail-server-info