sendResult는 Flex의 Responder 클래스와 짝을 이룹니다. NetConnection클래스의 call()함수로 서버측 메소드를 호출 할 경우, 서버측에서 클라이언트로 결과를 반환 해야 하는 경우 유용합니다. 클라이언트쪽에서는 Responder클래스를 이용해 응답을 받습니다.
1. sendResult 기본 예제
* Server측 소스
... public void sendResultTest(IClient client, RequestFunction function, AMFDataList params) { sendResult(client, params, "Hello World!"); } ... |
* Client측 소스
... nc.call("sendResultTest", new Responder(function(data:Object):void { Cc.log(data);
})); ... |
2. sendResult 활용 예제
아래 소스는 WOWZA에서 제공해주는 예제입니다. 아~주 유용하고, 여러가지로 활용될 예제라 눈여겨 봐야할 것 같습니다~ 서버측 접속정보(총원, 스트림정보 등)를 알아내는 예제입니다.
* Server측 소스
... public void getServerConnectionCount(IClient client, RequestFunction function, AMFDataList params) { Server server = Server.getInstance(); int count = (int)server.getConnectionCounter().getCurrent(); sendResult(client, params, count); }
public void getApplicationConnectionCount(IClient client, RequestFunction function, AMFDataList params) { IApplication application = client.getApplication(); int count = (int)application.getConnectionCounter().getCurrent(); sendResult(client, params, count); }
public void getApplicationInstanceConnectionCount(IClient client, RequestFunction function, AMFDataList params) { IApplicationInstance applicationInstance = client.getAppInstance(); int count = (int)applicationInstance.getConnectionCounter().getCurrent(); sendResult(client, params, count); }
public void getStreamConnectionCount(IClient client, RequestFunction function, AMFDataList params) { String streamName = params.getString(PARAM1); int count = 0; IApplicationInstance applicationInstance = client.getAppInstance(); List<IMediaStream> streamList = applicationInstance.getPlayStreamsByName(streamName); if (streamList != null) count = streamList.size(); sendResult(client, params, count); }
public void getStreamClientIds(IClient client, RequestFunction function, AMFDataList params) { AMFDataArray clientList = new AMFDataArray(); String streamName = params.getString(PARAM1); IApplicationInstance applicationInstance = client.getAppInstance(); List<IMediaStream> streamList = applicationInstance.getPlayStreamsByName(streamName); if (streamList != null) { Iterator<IMediaStream> iter = streamList.iterator(); while (iter.hasNext()) { IMediaStream stream = iter.next(); if (stream == null) continue; IClient sclient = stream.getClient(); if (sclient == null) continue; clientList.add(new AMFDataItem(sclient.getClientId())); } } sendResult(client, params, clientList); } ... |
* Client측 소스
... Cc.clear(); var ncServerResults:Object = new Object() ncServerResults.onResult = function(count:Number):void { Cc.log("server: "+count); } nc.call("getServerConnectionCount", new Responder(ncServerResults.onResult));
var ncApplicationResults:Object = new Object() ncApplicationResults.onResult = function(count:Number):void { Cc.log("application: "+count); } nc.call("getApplicationConnectionCount", new Responder(ncApplicationResults.onResult));
var ncAppInstanceResults:Object = new Object() ncAppInstanceResults.onResult = function(count:Number):void { Cc.log("appInstance: "+count); } nc.call("getApplicationInstanceConnectionCount", new Responder(ncAppInstanceResults.onResult));
var streamName:String = "myStream";
var ncStreamResults:Object = new Object() ncStreamResults.onResult = function(count:Number):void { Cc.log("stream: "+count); } nc.call("getStreamConnectionCount", new Responder(ncStreamResults.onResult), streamName);
var ncStreamListResults:Object = new Object() ncStreamListResults.onResult = function(list:Array):void { Cc.log("clients"); for(var i:Number=0;i<list.length;i++) Cc.log("["+i+"]: "+list[i]); } nc.call("getStreamClientIds", new Responder(ncStreamListResults.onResult), streamName); ... |
'Media > WOWZA' 카테고리의 다른 글
[Wowza] Wowza Application.xml의 Stream Types 설정 (0) | 2014.10.22 |
---|---|
[Wowza] Recording Webcam to Wowza Streaming Engine with Flex (3) | 2014.10.07 |
[Wowza] SharedObject with Flex (0) | 2014.01.28 |
[Wowza] Client에서 Server함수호출, Server에서 Client함수호출 (0) | 2014.01.24 |
[Wowza] NetConnection사용해서 서버연결하기 (0) | 2014.01.24 |