Pregunta

Tengo un cliente Flash que quiero conectar a un servidor. Ambos están usando localhost y el puerto 50000, por lo que no debería haber problemas entre dominios. También configuro Acceso solo a la red en la configuración de publicación. Cuando llamo a XMLSocket connect, el servidor parece obtener una nueva conexión. Pero, la devolución de llamada XMLSocket.onConnect no se llama con success = true.

¿Alguna idea sobre lo que puede estar mal?

Aquí está el código ActionScript para crear el socket.

 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;
¿Fue útil?

Solución

Esto terminó siendo un problema de seguridad. Flash Player ha agregado seguridad cuando se utiliza un XMLSocket. Flash Player ahora busca un archivo de políticas en el puerto 843. Una alternativa es hacer que swf busque el archivo de políticas mediante la llamada Security.loadPolicyFile () . Si el archivo existe y todas las configuraciones de seguridad permiten el XMLSocket, entonces se crea la conexión.

Consulte el Artículo de Adobe sobre archivos de política y más información aquí . Este es otro buen artículo sobre los archivos de políticas .

Aquí está el archivo de política que finalmente funcionó para mí. No es restrictivo en absoluto. Pero, pensé que las cosas funcionaban y luego las corregía.

<?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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top