Flash如何通过AMF与服务器上的服务/脚本进行通信?AMF通信如何工作?
关于AMF libraries为Python/Perl的/ PHP这更容易比.NET/Java的开发:
- ?他们执行的脚本文件,只要Flash发送一个远程过程调用?
- 或者它们是否通过套接字进行通信来编写作为服务运行的类?
关于典型AMF功能:
- 如何传输数据?它是通过自动序列化的方法参数吗?
- 如何服务器“push”给客户? Flash电影必须连接到套接字上吗?
感谢您的时间。
Flash如何通过AMF与服务器上的服务/脚本进行通信?AMF通信如何工作?
关于AMF libraries为Python/Perl的/ PHP这更容易比.NET/Java的开发:
关于典型AMF功能:
感谢您的时间。
唯一的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看看它的能力和代码的样子。
与服务/脚本在服务器上通过AMF如何闪存沟通?
数据通过TCP/IP连接传送。有时会使用现有的HTTP连接,而在其他情况下,将为AMF数据打开新的TCP/IP连接。当打开HTTP或其他TCP连接时,可能会使用套接字接口。 AMF绝对是通过某种TCP连接传输的,而套接字接口实际上是打开这种连接的唯一方式。
“数据”被转移由ECMA脚本语言(Javascript(TM))的数据类型,如“整数”,“字符串”,“对象”,等等。
有关的对象是如何编码成二进制技术规范,Adobe已经发布了规范:AMF 3.0 Spec at Adobe.com
一般的AMF-使用客户机/服务器系统的工作原理是这样的方式:
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对象。它接收到该消息,并将控制传递给适当的响应函数。这被称为“调度消息”。
有关您正在努力完成的更多信息,我可以为您提供更多有用的详细信息。