我正在创建一个客户端 - 服务器游戏。我的客户端是基于flex的游戏,我的服务器是erlang服务器。 一开始,当我直接在Flash播放器中测试我的Flex客户端时,我可以通过套接字连接轻松建立到我的erlang服务器的连接。两者都可以毫无问题地交换数据。
当我在Apache http服务器上部署我的flex应用程序并通过调用http://localhost/使用浏览器运行它时问题上升...我的flex套接字向我的erlang服务器发送请求跨域策略的消息。
所以我创建了一个代表跨域策略的xml消息,并将其作为对该请求的响应发送回我的flex应用程序。
然而,我仍然无法在我的Flex客户端和我的erlang服务器之间建立任何永久套接字连接。我知道这是因为我在我的flex套接字上添加了监听器,如果客户端 - 服务器之间的连接建立,我会将其内部状态修改为CONNECTED。
答案 0 :(得分:0)
我没有遇到过这个问题,但也许这会有所帮助。
默认策略文件已命名 crossdomain.xml并驻留在 服务器的根目录 提供数据...... 您可以使用loadPolicyFile()方法访问非默认策略文件。
http://livedocs.adobe.com/flex/3/html/help.html?content=deployingoverview_12.html
由XMLSocket提供的策略文件 server具有与any相同的语法 其他策略文件,但它必须 还指定访问的端口 被授予。当策略文件到来时 从低于1024的端口,它可以 授予访问任何端口的权限;当一个 策略文件来自端口1024或 更高,它只能授予访问权限 其他端口1024或更高。
答案 1 :(得分:0)
flashplayer以多种方式限制您的套接字使用。你已经发现的一个:)另一个是指定你是否使用网络。有一种网络模式和一种文件系统模式(访问文件系统)。你不能兼得。
所以你应该尝试用它来编译它:
-use-network=true
是的,我知道这是一个PITA用flash进行套接字编程。您应该实现每个OnErrorXYZ方法并尽可能多地打印信息。使用wireshark或不同的网络嗅探器也是一个好主意。