Flash ゲームは、PHP Socket Server に接続する必要があります。セキュリティ上の理由から、フラッシュ クライアントが接続を試みたときに、ポリシー ファイルをフラッシュ クライアントに送信する必要があります。
以下は私がやったことです。
Actionscript / Flex 3 / Flash の場合:
Security.loadPolicyFile("http://[SERVER.IP]:9000/crossdomain.xml");
socket.connect(hostName, port); //connect to the socket
[rest of original code]
ソケット サーバーがリクエストに応答するようにするために、サーバーに次のコードを追加しました。
elseif (preg_match("/policy-file-request/i", $buffer) or preg_match("/crossdomain/i", $buffer)) {
socket_write($socket, '<?xml version="1.0"?><cross-domain-policy><site-control permitted-cross-domain-policies="all"/><allow-access-from domain="*" to-ports="9000" /></cross-domain-policy>');
unset($read_sockets[array_search($socket, $read_sockets)]);
socket_shutdown($socket, 2);
socket_close($socket);
ただし、「Content-Type が見つからないため、(URL) のポリシー ファイルを無視しています」というエラーが表示されます。そこで、xml コードのすぐ上にヘッダーを追加して、これを修正しようとしました。
socket_write($socket, "Content-Type: text/xml\n");
残念ながら、私はまだ同じエラーが発生します。コンテンツ タイプを間違った方法で指定していませんか?