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對象。它接收到該消息,並將控制傳遞給適當的響應函數。這被稱爲「調度消息」。
有關您正在努力完成的更多信息,我可以爲您提供更多有用的詳細信息。