Flex socket和erlang socket通信问题

时间:2011-06-29 09:42:49

标签: flex actionscript-3 http sockets erlang

我正在创建一个客户端 - 服务器游戏。我的客户端是基于flex的游戏,我的服务器是erlang服务器。 一开始,当我直接在Flash播放器中测试我的Flex客户端时,我可以通过套接字连接轻松建立到我的erlang服务器的连接。两者都可以毫无问题地交换数据。

当我在Apache http服务器上部署我的flex应用程序并通过调用http://localhost/使用浏览器运行它时问题上升...我的flex套接字向我的erlang服务器发送请求跨域策略的消息。

所以我创建了一个代表跨域策略的xml消息,并将其作为对该请求的响应发送回我的flex应用程序。

然而,我仍然无法在我的Flex客户端和我的erlang服务器之间建立任何永久套接字连接。我知道这是因为我在我的flex套接字上添加了监听器,如果客户端 - 服务器之间的连接建立,我会将其内部状态修改为CONNECTED。

2 个答案:

答案 0 :(得分:0)

我没有遇到过这个问题,但也许这会有所帮助。

  

默认策略文件已命名   crossdomain.xml并驻留在   服务器的根目录   提供数据......   您可以使用loadPolicyFile()方法访问非默认策略文件。

http://livedocs.adobe.com/flex/3/html/help.html?content=deployingoverview_12.html

  

由XMLSocket提供的策略文件   server具有与any相同的语法   其他策略文件,但它必须   还指定访问的端口   被授予。当策略文件到来时   从低于1024的端口,它可以   授予访问任何端口的权限;当一个   策略文件来自端口1024或   更高,它只能授予访问权限   其他端口1024或更高。

http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00005403.html

答案 1 :(得分:0)

flashplayer以多种方式限制您的套接字使用。你已经发现的一个:)另一个是指定你是否使用网络。有一种网络模式和一种文件系统模式(访问文件系统)。你不能兼得。

所以你应该尝试用它来编译它:

-use-network=true

是的,我知道这是一个PITA用flash进行套接字编程。您应该实现每个OnErrorXYZ方法并尽可能多地打印信息。使用wireshark或不同的网络嗅探器也是一个好主意。