Comunidad de diseño web y desarrollo en internet online

[AYUDA] Sockets en el navegador no van.

Citar            
MensajeEscrito el 06 Jun 2011 02:43 pm
Pues he hecho un juego online con XMLSockets en as2, peero al subirlo al navegador, no va.

Pues he buscado y buscado y esto es lo que he hecho;
1. OPCION

En el servidor php;

Código PHP :

socket_write($client, '<cross-domain-policy><allow-access-from domain="*" to-ports="*"/></cross-domain-policy>'.chr(0x00));  


En flash;

Código ActionScript :

_miSocket = new XMLSocket();
_miSocket.addEventListener(Event.CONNECT,  conectado);
_miSocket.addEventListener(IOErrorEvent.IO_ERROR,  error);
_miSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,  seguridad);
_miSocket.connect('IP, 10000);


Pues tengo puertos abiertos y demas, al probarlo desde mi ordenador, va, desde el ordenador de un amigo va, pero al subirlo a una web ¡NO VA!, y se supone que ese codigo era la solucion, pero nada, no va.
Trata del crossdomain.xml o algo asi, que flash necesita para aceptar los sockets en navegador.

Os lo agradeceria toda mi vida si me decis la solucion :P

Por seyder

50 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Jun 2011 03:35 pm
Usualmente los servidores que soportan PHP no dejan correr sockets en PHP por temas de seguridad, ¿estás seguro que tu proveedor lo permite?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2011 04:19 pm
Que hablas, el servidor puede ser php o java o lo que sea, un amigo que programa en as3 lo consiguio igual.

El problema es que para aceptar sockets en el navegador tengo que poner una cosa de crossdomain o algo asi, solisolrag mira esto que aqui se supone que lo solucionan; http://www.forosdelweb.com/f16/flash-actionscript-3-php-sockets-881126/#post3725344

Pero a mi no me va, necesito tu ayuda tio, ojala me lo resuelvas solisarg, :P

Por seyder

50 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Jun 2011 04:28 pm
Perdón mi ignorancia, no sabía que la tenías tan clara. Cuentame que estás usando para el back-end, es decir para los sockets en servidor

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2011 04:32 pm
No te entiendo, yo uso las funciones en php de socket_create y tal.

En flash si pongo esto;
miSocket = new XMLSocket();
miSocket.connect('94.127.184.74',10000);
miSocket.onConnect = function(success) {
if (success) {
conectado.text = "Bien, estas conectado";
} else {
conectado.text = "Lo siento, no conecta";
}
};

Y va, pero si lo pruebo en el navegador no va.
Entonces segun esa web yo tenia que poner esto al php (lo puse en el sitio correcto)

socket_write($client, '<cross-domain-policy><allow-access-from domain="*" to-ports="*"/></cross-domain-policy>'.chr(0x00));

Luego en el flash debia poner esto;

_miSocket = new XMLSocket();
_miSocket.addEventListener(Event.CONNECT, conectado);
_miSocket.addEventListener(IOErrorEvent.IO_ERROR, error);
_miSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, seguridad);
_miSocket.connect('IP, 10000);

Lo puse, pero en fin, en mi ordenador va, pero en el navegador no.
Estoy segurisimo que no es por los puertos, ya que si le paso el swf a un amigo y el lo abre, podemos jugar online.

Estoy desquiciado solisarg..

Por seyder

50 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Jun 2011 05:06 pm
Ya, me acuerdo de un larguísimo thread donde se discutía eso y gente haciendo eso mismo y diciendo que no le funcionaba. Mi hipótesis es que el servidor mata los threads cuando el referrer es un navegador. Igual si es un error de policy, tiene que saltarte el SECURITY_ERROR

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2011 05:34 pm
¡ESTO ES AS2 NO AS3 PORFAVOR MUEVAN EL TEMA BIEN!

No he entendido lo que es nada de lo que me has dicho.

Entonces, no hay solucion?, es lo peor de todo, llevo 4 meses programando un juego online, me funciona genial pero al subirlo para que juegue la gente no va.

Es para llorar

Por seyder

50 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Jun 2011 06:11 pm
Lo primero: stay cool, gritar y reclamar en negrita no es muy amable, si te pone de los nervios preguntar en un foro no lo hagas, y evita exhabruptos sobre todo con los moderadores
Segundo: fui yo quien lo movió, y me asombra mi ignorancia sobre esta clase de Flash, pero celebro haberme encontrado alguien que la conoce tanto y me puede explicar sobre mi error>

Código ActionScript :

_miSocket = new XMLSocket();
_miSocket.addEventListener(Event.CONNECT, conectado);
_miSocket.addEventListener(IOErrorEvent.IO_ERROR, error);
_miSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, seguridad); 


Tenía entendido que la clase Event, IOErrorEvent y SecurityErrorEvent habían sido introducidas en AS3, ya que en AS2 tenías que pillar el error en el objeto que te devolvía el onConnect de XMLSocket (o en Filereference para los errores de lectura, pero que devuelven un callback onIOError) ... pero parece que me he equivocado. Agradecería me muestres donde puedo encontrar la referencia a estos eventos en la ayuda de AS2, porque imagino que si llevas 4 meses programando esto nunca podrías tener tal error de base.

Gracias
Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2011 06:48 pm
Perdoname, estaba muy alterado.

Mira, si llevo 4 meses programando, pero si te digo la verdad, ese tipo de codigo;

_miSocket.addEventListener(Event.CONNECT, conectado);

En mi vida lo he llevado a cabo y no entiendo tampoco lo que dice, supongo que añade un evento que escucha a el evento que conecta.
Es diferente, yo puedo saber mucho de una parte de flash (como la que es, juego multijugador), y no saber otras partes, jamas trabaje con addEventLister, yo cogí el codigo de 'Lo que supuestamente es la soluccion', lo copie "_miSocket.addEventListener(Event.CONNECT, conectado);
_miSocket.addEventListener(IOErrorEvent.IO_ERROR, error);
_miSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, seguridad); "
y lo pegue, ya que no me dio error pense que era en AS2, pero alomejor me equivoco y ese codigo esta hecho para AS3, la verdad es que no lo se, pero ahora si que es un lio, ya que no hay ninguna solucion de dicho, en AS2.

No es error, el error no me da, es que hay que poner algo, para que el socket acepte el flash en una web y dicho nunca lo he llevado a cabo entonces...

Acaban de subir un tema de otro foro, en cristalab, copiando y pegando los mensajes, abajo de este creo, pues ahi se supone que esta la solucion pero no me va, si puedes y quieres, podrias probar en AS2 a poner dicho codigo y ver si es fallo mio o algo.

Muchas gracias, espero que haya solucion y me la muestres
Un saludo.

Por seyder

50 de clabLevel



 

chrome
Citar            
MensajeEscrito el 06 Jun 2011 06:57 pm
Bien, parece que nos entendemos mejor.
Entonces copiaste y pegaste este código en AS3 que obviamente no funciona en AS2. Pon entonces un code que sea de AS2 para el manejo de sockets. Luego la ayuda dice que tienes que devolver el crossdomain via socket, no recuerdo los detalles, pero si recuerdo hilos larguísimos con el tema y gente a la que le falla. Finalmente, yo nunca tuve ese problema, y desde que se estableció ese policy no me tocó trabajar con sockets pelados, uso FMS, así que no sabría decirte como solucionarlo (hasta que me pase a mi, ah{i me pondré a investigar).
Aclarado el tema, devuelvo esto a AS2 y dejo la palabra a quien haya resuelto este tema del socket y el policy (descartando desde ya que el servidor no está matando tu socket, algo que me pasa en el 90% de los servidores en PHP, no así en Java)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2011 07:54 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Jun 2011 06:16 pm
Nada solisarg, no hay ni UN TUTORIAL, ni UN CODIGO, NI NADA QUE TE ENSEÑE a ponerlo en AS2, todo los tutoriales de ello estan en AS3, lo unico que encuentro es en foros la gente preguntando en AS2, pero nadie responde...

Mira, si puedes, busca algo, yo he buscado lo que es todo lo referente, nada de nada tio, :(

Por seyder

50 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Jun 2011 06:22 pm
En el artículo que te puse pone como es el documento que tiene que devolver el socket cuando el player hace la primera conexión al PORT 843. Si dices que eso no funciona, te creeré hasta que tenga la necesidad de hacerlo yo mismo y pueda comprobarlo ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.