FlashクライアントXMLSocketがサーバーに接続していません
-
05-07-2019 - |
質問
サーバーに接続したいFlashクライアントがあります。どちらもlocalhostとポート50000を使用しているため、クロスドメインの問題は発生しません。また、公開設定で「アクセスネットワークのみ」を設定します。 XMLSocket接続を呼び出すと、サーバーは新しい接続を取得しているようです。ただし、XMLSocket.onConnectコールバックはsuccess = trueで呼び出されません。
何が間違っているかについてのアイデアはありますか?
ソケットを作成するためのActionScriptです。
function myOnConnect(success) {
if (success) {
trace ("Connection succeeded!")
inputText.text = "open";
// socket.send("1\n");
gotoAndPlay(2);
} else {
trace ("Connection failed!")
inputText.text = "failed";
}
}
btnConnect.onRelease = function()
{
inputText.text = "started";
result = socket.connect("localhost", 50000);
}
socket = new XMLSocket();
socket.onConnect = myOnConnect;
解決
これは最終的にセキュリティの問題になりました。 XMLSocketを使用する場合、Flash Playerはセキュリティを追加しました。 Flash Playerは、ポート843でポリシーファイルを検索するようになりました。別の方法は、 Security.loadPolicyFile()
の呼び出しを使用してswfにポリシーファイルを検索させることです。ファイルが存在し、すべてのセキュリティ設定でXMLSocketが許可されている場合、接続が作成されます。
ポリシーファイルに関するAdobeの記事および詳細をご覧ください。 こちら。これは、別の優れた記事ポリシーファイルについて。
これが最終的に私のために機能したポリシーファイルです。それはまったく制限的ではありません。しかし、私は物事が機能するようになってから、それを正しくすることを考えました。
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<!-- Policy file for xmlsocket://socks.example.com -->
<cross-domain-policy>
<!-- This is a master socket policy file -->
<!-- No other socket policies on the host will be permitted -->
<!-- <site-control permitted-cross-domain-policies="all"/> -->
<!-- Instead of setting to-ports="*", administrator's can use ranges and commas -->
<!-- This will allow access to ports 123, 456, 457 and 458 -->
<allow-access-from domain="*" to-ports="*" secure="false"/>
</cross-domain-policy>
所属していません StackOverflow