2009-09-14 28 views
4

Flash如何通过AMF与服务器上的服务/脚本进行通信?AMF通信如何工作?

关于AMF libraries为Python/Perl的/ PHP这更容易比.NET/Java的开发:

  • ?他们执行的脚本文件,只要Flash发送一个远程过程调用?
  • 或者它们是否通过套接字进行通信来编写作为服务运行的类?

关于典型AMF功能:

  • 如何传输数据?它是通过自动序列化的方法参数吗?
  • 如何服务器“push”给客户? Flash电影必须连接到套接字上吗?

感谢您的时间。

回答

8

唯一的AMF库我熟悉的是PyAMF,这一直是伟大的,到目前为止的工作。以下是问题的答案为PyAMF的:

  • 我想像你可以运行它作为一个脚本(你的意思是像CGI?),但最简单的IMO是建立一个应用程序服务器专为AMF请求

  • 最简单的方法是在纯Python,这PyAMF的包装序列化呼入/呼出AMF数据

  • 如果这是你需要做的事,但同样可以通过套接字进行通信,它的定义函数最简单的使用纯Python函数;一个使用的插座是保持开放的连接和“推”的数据提供给客户,看this例如

这里有三个简单的AMF服务上localhost:8080被服务的例子:

from wsgiref import simple_server 
from pyamf.remoting.gateway.wsgi import WSGIGateway 

## amf services ################################################## 

def echo(data): 
    return data 

def reverse(data): 
    return data[::-1] 

def rot13(data): 
    return data.encode('rot13') 

services = { 
    'myservice.echo': echo, 
    'myservice.reverse': reverse, 
    'myservice.rot13': rot13, 
} 

## server ######################################################## 

def main(): 
    app = WSGIGateway(services) 

    simple_server.make_server('localhost', 8080, app).serve_forever() 

if __name__ == '__main__': 
    main() 

我会绝对推荐PyAMF。看看examples看看它的能力和代码的样子。

4

与服务/脚本在服务器上通过AMF如何闪存沟通?

数据通过TCP/IP连接传送。有时会使用现有的HTTP连接,而在其他情况下,将为AMF数据打开新的TCP/IP连接。当打开HTTP或其他TCP连接时,可能会使用套接字接口。 AMF绝对是通过某种TCP连接传输的,而套接字接口实际上是打开这种连接的唯一方式。

“数据”被转移由ECMA脚本语言(Javascript(TM))的数据类型,如“整数”,“字符串”,“对象”,等等。

有关的对象是如何编码成二进制技术规范,Adobe已经发布了规范:AMF 3.0 Spec at Adobe.com

一般的AMF-使用客户机/服务器系统的工作原理是这样的方式:

  1. 客户端显示一些用户界面并打开到服务器的TCP连接。
  2. 服务器向客户端发送一些数据,客户端更新其用户界面。
  3. 如果用户发出命令,则客户端通过TCP连接向服务器发送一些数据。
  4. 继续执行步骤2-3,直到用户退出。后来

    public class UICommandMessage extends my.CmdMsg 
    { 
        public function UICommandMessage(action:String, arg: String) 
        { 
         this.cmd = action; 
         this.data = String; 
        } 
    }

    然后:

例如,如果用户点击UI中的 “发送邮件” 按钮,然后在客户端的代码可能做到这一点

 
UICommandMessage msg = new UICommandMessage("Button_Press", "Send_Mail"); 
server_connection.sendMessage(msg); 

服务器代码,服务器也监视连接以及传入的AMF对象。它接收到该消息,并将控制传递给适当的响应函数。这被称为“调度消息”。

有关您正在努力完成的更多信息,我可以为您提供更多有用的详细信息。