AMF通讯如何运作?

Rob*_*cks 4 python flash perl actionscript-2 amf

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

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

  • 当Flash发送远程过程调用时,它们是否执行脚本文件?
  • 或者他们是否通过套接字与作为服务运行的脚本类进行通信?

关于典型的AMF功能:

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

谢谢你的时间.

Ste*_*lla 8

我熟悉的唯一AMF库是PyAMF,到目前为止它一直很好用.以下是您对PyAMF的问题的答案:

  • 我想你可以把它作为一个脚本运行(你的意思是CGI吗?),但最简单的IMO是专门为AMF请求设置一个app服务器

  • 最简单的方法是在纯python中定义函数,PyAMF将其包装以序列化传入/传出的AMF数据

  • 你可以通过套接字进行通信,如果这是你需要做的,但同样,它是最简单的使用纯Python函数; 一个用于套接字的用途是保持打开连接并将数据"推送"到客户端,请参阅示例

以下是三个简单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()
Run Code Online (Sandbox Code Playgroud)

我肯定会推荐PyAMF.查看示例以了解它的功能以及代码的外观.