【发布时间】:2012-05-19 12:45:51
【问题描述】:
我有一个在http://192.168.0.179 运行的服务器。它提供一个 Flash 文件 WebSocketMain.swf(来自https://github.com/gimite/web-socket-js),它尝试与 192.168.0.179:5000 建立套接字连接。我还有一个在 192.168.0.179:843 运行的套接字策略文件服务器。
这在运行服务器的机器上运行良好(运行 OS X)。在该机器上,Flash 连接到策略文件服务器,然后通过端口 5000 连接到 WebSocket 服务器。但是,在同一网络 (192.168.0.175) 上的 Windows(64 位)机器上,运行 Flash 10.3/11.2/11.3 (在 IE9/Chrome 中),我在 JS 控制台中收到以下错误消息:
日志:[WebSocket] 调试已启用
日志:[WebSocket] 策略文件:xmlsocket://192.168.0.179:843
[WebSocket] 无法连接到位于 ws://192.168.0.179:5000/websockettest 的 Web Socket 服务器(安全错误:错误 #2048:安全沙箱违规:
http://192.168.0.179/assets/flash/WebSocketMain.swf无法从 192.168.0.179:5000 加载数据。)确保服务器正在运行并且正确放置了 Flash 套接字策略文件日志:[WebSocket] 关闭
根据服务器机器上的 tcpdump 和 policy server 日志,Flash Player 甚至没有连接到位于 192.168.0.179 的 policy server。 192.168.0.179:843是从.175机器打开的,所以FP连接应该没有问题。我可以从 .175 机器通过终端客户端(例如 PuTTY)连接到它,并毫无问题地接收策略文件。只是为了确保我也禁用了 Windows 防火墙,也没有任何效果。
我尝试将 WebSocketMain.swf 修改为显式调用 Security.loadPolicyFile() 并且根本不调用它,但没有任何效果。我也尝试在代码中添加 Security.allowDomain("*") 。依然没有。我什至尝试将 FP 将连接的 URL(由 Web 服务器提供)修改为 192.168.0.179:80。没有。 192.168.0.179:10000 也不起作用。连 127.0.0.1 和 localhost 都不行,报同样的错误信息
这可能是什么原因造成的?为什么 FP 甚至不尝试连接到策略服务器?
【问题讨论】:
-
来电是
Security.loadPolicyFile("xmlsocket://192.168.0.179:843");。今天在服务端和客户端都用数据包分析器检查了,都没有尝试连接。 -
我尝试将网站托管在第三台远程机器上。在 OS X 机器上一切正常,它连接到策略服务器,获取文件并连接套接字。但是,在 Windows 机器上,问题仍然存在。
标签: actionscript-3 flash websocket