Foros del Web » Creando para Internet » Flash y Actionscript »

FLASH + ACTIONSCRIPT 3 + PHP + Sockets

Estas en el tema de FLASH + ACTIONSCRIPT 3 + PHP + Sockets en el foro de Flash y Actionscript en Foros del Web. Buen día, revise bastante el foro y siempre me encontré con el mismo final con respecto a este tema. Teniendo un servidor PHP, al conectar ...
  #1 (permalink)  
Antiguo 29/01/2011, 09:06
 
Fecha de Ingreso: febrero-2009
Mensajes: 20
Antigüedad: 15 años, 9 meses
Puntos: 0
FLASH + ACTIONSCRIPT 3 + PHP + Sockets

Buen día, revise bastante el foro y siempre me encontré con el mismo final con respecto a este tema.

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:
[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:
Security.loadPolicyFile();
Según flash para el caso de sockets debe ir así
Código:
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 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:
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
  #2 (permalink)  
Antiguo 29/01/2011, 22:22
 
Fecha de Ingreso: febrero-2009
Mensajes: 20
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: FLASH + ACTIONSCRIPT 3 + PHP + Sockets

¡Lo he logrado!, así queda el AS
Código:
_miSocket = new Socket();
_miSocket.addEventListener(Event.CONNECT,  conectado);
_miSocket.addEventListener(IOErrorEvent.IO_ERROR,  error);
_miSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,  seguridad);
_miSocket.connect('127.0.0.1', 1500);
Como ven no tiene más que la apertura del socket
Y en el PHP seguidamente de recibir la conexión y almacenar el nuevo cliente hacemos esto
Código PHP:
$client    socket_accept($socket); 
socket_write($client'<cross-domain-policy><allow-access-from domain="*" to-ports="*"/></cross-domain-policy>'.chr(0x00)); 
La primera línea es la aceptada de la nueva conexión, chr(0x00) esto es necesario para que flash lo lea

Apenas AS se comunica con el servidor este debería proporcionar el PolicyFile, entonces lo que hacemos es escribir directamente desde el servidor al cliente un string con el contenido del PolicyFile y listo, se permite la conexión

:D gracias

Última edición por jugokus; 29/01/2011 a las 22:27
  #3 (permalink)  
Antiguo 10/03/2011, 10:11
 
Fecha de Ingreso: diciembre-2009
Mensajes: 2
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: FLASH + ACTIONSCRIPT 3 + PHP + Sockets

Viejo: GRACIASSSSSSSSSSSS!!!!!!!!!!!!!!!!, hace no menos de una semana que le estoy buscando la vuelta a este tema, TODOS los foros conducen a nada, la misma pregunta se repite una y otra vez y las respuestas son de todos los colores, con la tuya me funciono a la primera, ya que conecte a esta altura para mi es todo un logro, es increible que esta respuesta no figure entre los primeros lugares al googlear hasta el astio, mil gracias!!!!!!!!!!
  #4 (permalink)  
Antiguo 13/04/2011, 18:01
 
Fecha de Ingreso: marzo-2009
Mensajes: 1
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: FLASH + ACTIONSCRIPT 3 + PHP + Sockets

Che disculpen la molestia, yo intente con la modificacion que propones, en windows 7. y Sigue sin conectarse cuando es desde el explorador.

Habra algo que no tengo en cuenta?

Saludos

Etiquetas: loadpolicyfile, php, sctionscript, sockets, socket_create
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:28.