AMF通信是如何工作的?

2024-04-29 00:11:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

关于典型的AMF功能:

  • 如何传输数据?是通过方法参数自动序列化的吗?在
  • 如何将服务器“push”发送到客户端?Flash电影必须连接到插座上吗?在

谢谢你的时间。在


Tags: 文件功能服务器脚本librariesnet远程过程
2条回答

我唯一熟悉的AMF库是PyAMF,到目前为止,它非常适合使用。以下是您对PyAMF问题的回答:

  • 我想你可以把它当作一个脚本来运行(你是说像CGI吗?),但IMO最简单的方法是专门为AMF请求设置应用服务器

  • 最简单的方法是用纯python定义函数,PyAMF包装这些函数来序列化传入/传出的AMF数据

  • 如果需要的话,可以通过套接字进行通信,但是同样,使用纯Python函数是最简单的;套接字的一个用途是保持开放的连接并将数据“推送”到客户端,请参见this示例

下面是一个在localhost:8080上提供服务的三个简单AMF服务的示例:

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,看看它有什么功能,代码是什么样子的。在

How does Flash communicate with services / scripts on servers via AMF?

数据通过TCP/IP连接传输。有时会使用现有的HTTP连接,在其他情况下,会为AMF数据打开一个新的TCP/IP连接。当打开HTTP或其他TCP连接时,可能会使用sockets接口。AMF肯定会通过某种TCP连接进行传输,而sockets接口实际上是打开这种连接的唯一方法。在

传输的“数据”由ECMA脚本(Javascript(tm))数据类型组成,如“integer”、“string”、“object”等。在

对于如何将对象编码为二进制的技术规范,Adobe发布了一个规范:AMF 3.0 Spec at Adobe.com

通常,AMF使用客户机/服务器系统的工作方式如下:

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

例如,如果用户单击UI中的“发送邮件”按钮,则客户端代码可能会执行以下操作:

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

之后:

^{pr2}$

在服务器代码中,服务器也在监视传入的AMF对象的连接。它接收消息,并将控制权传递给适当的响应函数。这叫做“发送消息”。在

有了更多关于你想要完成什么的信息,我可以给你更多有用的细节。在

相关问题 更多 >