Flash如何通过AMF与服务器上的服务/脚本进行通信?
关于Python / Perl / PHP的AMF libraries比.NET / Java更容易开发:
关于典型的AMF功能:
感谢您的时间。
答案 0 :(得分:8)
我唯一熟悉的AMF库是PyAMF,到目前为止,它已经很好用了。以下是您对PyAMF的问题的答案:
我想你可以将它作为脚本运行(你的意思是CGI吗?),但最简单的IMO是专门为AMF请求设置一个app服务器
最简单的方法是在纯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以了解它的功能以及代码的外观。
答案 1 :(得分:4)
Flash如何通过AMF与服务器上的服务/脚本进行通信?
通过TCP / IP连接传输数据。有时会使用现有的HTTP连接,而在其他情况下会为AMF数据打开新的TCP / IP连接。打开HTTP或其他TCP连接时,可能使用套接字接口。 AMF肯定会通过某种类型的TCP连接,而套接字接口实际上是打开这种连接的唯一方式。
传输的“数据”包括ECMA脚本(Javascript(tm))数据类型,如“整数”,“字符串”,“对象”等。
有关如何将对象编码为二进制的技术规范,Adobe已发布了一个规范:AMF 3.0 Spec at Adobe.com
通常,使用AMF的客户端/服务器系统的工作方式如下:
例如,如果用户单击UI中的“发送邮件”按钮,则客户端代码可能会执行此操作:
public class UICommandMessage extends my.CmdMsg { public function UICommandMessage(action:String, arg: String) { this.cmd = action; this.data = String; } }
然后:
UICommandMessage msg = new UICommandMessage("Button_Press", "Send_Mail"); server_connection.sendMessage(msg);
在服务器代码中,服务器正在监视连接以及传入的AMF对象。它接收消息,并将控制传递给适当的响应函数。这称为“调度消息”。
有关您要完成的更多信息,我可以为您提供更多有用的信息。