Teniendo un servidor PHP, al conectar a flash con las clase "socket", si lo hacemos probando la película en flash conecta, pero si vamos a HTML no conecta, el error que arroja es:
Código ActionScript :
[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]
Ahora bien, me canse de probarlo en localhost, actualmente tengo el servidor corriendo en mi hosting, una ip a la que se puede acceder de cualquier maquina, igual, el error continua, dudo que sea el socket en PHP, puesto que desde el entorno de pruebas de flash funciona perfectamente
Una de las dudas que tengo es con la función
Código ActionScript :
Security.loadPolicyFile();
Según flash para el caso de sockets debe ir así
Código ActionScript :
Security.loadPolicyFile("xmlsocket://ip:puerto");
Pero se debe especificar así "xmlsocket://ip:puerto" o así "xmlsocket://ip:puerto/crossdomain.xml"? según flash cuando uno conecta con socket inmediatamente consulta el puerto 843 en busca del crossdomain, en esta acción envía esto al servidor "<policy-file-request/>", sabiendo esto corrí adicionalmente un server en el puerto 843 y en ningún momento se conectaba ningún cliente, me dio la impresión que ni intenta verificar si existe el crossdomain.
Cuando se intenta conectar desde HTML lo logra, pero el servidor luego de unos segundos dice
Código :
nuevo cliente conectado Warning: socket_read(): unable to read from socket [104]: Connection reset by peer Warning: socket_recv(): unable to read from socket [107]: Transport endpoint is not connected
Con esto se me ocurre que la conexión se realiza pero no existen "permisos" para leer los datos del cliente
Otro detalle que me llamo la atención es "Security.sandboxType", esto es una propiedad READONLY, pero tiene varios valores con respecto al sandbox, nunca entendí como cambiar esta propiedad
Les contare como voy actualmente
Publish settings: access network only
crossdomain.xml:
Código XML :
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" to-ports="*" /> </cross-domain-policy>
actionscript:
Código ActionScript :
Security.allowDomain("midominio.com"); Security.loadPolicyFile("midominio.com/crossdomain.xml"); _miSocket = new Socket(); _miSocket.addEventListener(Event.CONNECT, conectado); _miSocket.addEventListener(IOErrorEvent.IO_ERROR, error); _miSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, seguridad); _miSocket.connect('ip_dominio', puerto);
Esta persona dice que lo pudo lograr: http://www.actionscript.org/forums/showthread.php3?t=171826
Bueno hasta acá he llegado, no lo he podido lograr fuera del entorno de flash, si alguien logro solucionarlo le agradecería muchísimo, si logro que funcione les comentare como.
Gracias