如何从Flash Media Server 3.5连接到Zend_Amf

时间:2009-12-31 19:09:03

标签: flash zend-framework flash-media-server zend-amf

我希望能够从Flash媒体服务器3.5连接到Zend_Amf(最新的ZendFramework版本)。我试着做以下事情:

function amfresponder ( ) {
this.onResult = function (result) {
    trace("Success: " + String(result));
};
this.onStatus = function (fault) {
    trace("Error: "+ fault.description);
};
};


application.onConnect = function(client) {

myResponder = new amfresponder();

connection = new NetConnection();

connection.connect("http://localhost/AmfServer.php");
trace("checking connection");
connection.call("isConnected",myResponder);

return true;    
}

我在apache访问日志中看到了AmfServer.php的请求 但没有返回任何内容,甚至没有返回错误消息。在fms管理日志中,我只看到'检查连接'。

更新

另一种方法:

application.isFine_Status = function(info) {
  for(var item in info) {
    trace(item + " " + info[item]);
  } 
}

application.isFine_Result = function(res) {
    trace(res);
}

application.onAppStart = function() {
trace("application started");
NetServices.setDefaultGatewayUrl("http://localhost/AmfServer.php");
    this.gatewayconn = NetServices.createGatewayConnection();   
    this.pservice = this.gatewayconn.getService('PrivateFunc',this);
    this.pservice.isFine();
}

Zend_Amf类是:

set_include_path(get_include_path().PATH_SEPARATOR.realpath(__DIR__.'/../').PATH_SEPARATOR.realpath(__DIR__.'/../../include/PEAR-R2'));

require_once('Zend/Amf/Server.php');
require_once('PrivateFunc.php');

$server = new Zend_Amf_Server();
$server->setClass('PrivateFunc','PrivateFunc');
$response = $server->handle();
echo $response;

在这两种情况下,我都没有结果。任何想法?

2 个答案:

答案 0 :(得分:1)

您可能需要尝试以下代码

setClass( “PrivateFunc”);   //需要启动服务器   $ handle = $ server-> handle();   回声($处理);   //回波($服务器 - >手柄()); ?>

答案 1 :(得分:0)

好的,经过大量研究后,似乎目前无法从adobe flash media server到zend_amf进行正确的连接。

我通过从adobe flash媒体服务器转移到它的免费解决方案red5解决了这个问题。 red5是基于java的,它提供了非常强大的编程语言,因此我将相关代码从php转换为java,并且所有内容(db操作)都在red5中完成,并且不需要php。