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

Problema con xmlsocket

Estas en el tema de Problema con xmlsocket en el foro de Flash y Actionscript en Foros del Web. Hola a todos! Agradecería mucho si alguien puede ayudarte en este tema: Estoy usando xmlsocket para crear un chat, donde el cliente es flash. Para ...
  #1 (permalink)  
Antiguo 13/02/2006, 05:19
 
Fecha de Ingreso: febrero-2006
Mensajes: 3
Antigüedad: 18 años, 2 meses
Puntos: 0
Problema con xmlsocket

Hola a todos!

Agradecería mucho si alguien puede ayudarte en este tema:
Estoy usando xmlsocket para crear un chat, donde el cliente es flash. Para ello hace falta un servidor de sockets. Esto lo tengo y funciona bien, está hecho en java. Lo que me sucede es que los datos se comunican bien del cliente flash al
servidor y viceversa, pero no como debe. Para ilustrar el problema primero les escribo el código de actionscript y luego les aclaro más la problemática:

/* INICIO CODIGO */

// funcion invocada cuando se conecta al socket
function myOnConnect(success) {
if (success) {
trace ("Connection succeeded!")
} else {
trace ("Connection failed!")
}
}
//declaracion del socket
var socket = new XMLSocket();
// evento de conexion al socket
socket.onConnect = myOnConnect
if (!socket.connect("localhost", 2789)) {
trace ("Connection failed!")
conexion.text = "KO";
}else
{conexion.text = "OK";

}
// funcion de envio de un xml a traves del socket
function sendData() {
var myXML = new XML();
var mySend = myXML.createElement("nodo");
mySend.attributes.myData = "eureka";
myXML.appendChild(mySend);
trace("antes de enviar..");
socket.send(myXML);
trace("despues de enviar..");
}
// el botón envía los datos cuando se pulsa
EnvioMensaje.onPress = function() {
datos.text="press";
sendData();
};
// evento producido al recibir datos por el socket
socket.onData = parsear;
function parsear(cadena){
trace(cadena);
}
// evento producido al recibir xml por el socket
socket.onXML = myOnXML;
function myOnXML(doc) {
datos.text = "recibido!";

}
/* INICIO CODIGO */
Explicación: en el flash simplemente tengo un boton y unos cuadros de texto. Al reproducir el flash, se abre un socket a traves del puerto 2789 en localhost. Cuando pulso el boton teoricamente se envia un xml, y cuando se recibe aparece en la ventana de salida el texto recibido y también en los cuadros de texto.

Pues bien, la conexion con el servidor de sockets se realiza sin problemas. Pero al pulsar el boton, parece como que los xml se quedan retenidos y no se envian en tiempo real. Digo que parece porque cuando reproduzco 3 flash distintos (el cliente flash del chat) para simular el chat, y a cada uno pulso su boton de envio, no pasa nada, pero si cierro uno de ellos entonces toda la informacion retenida anteriormente aparece en el servidor de sockets y este a su vez lo reenvia adecuadamente a los otros dos flash todavía en activo.

Es decir, la conexion se realiza perfectamente, pero el envio de datos parece quedarse en algun buffer, o simplemente retenido hasta que uno de los flash es desconectado.

¿Pueden ayudarme? ¿Hay algún tipo de seguridad que impida el envío en tiempo real a través de sockets abiertos?
Muchas gracias por su atención.
  #2 (permalink)  
Antiguo 13/02/2006, 07:57
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Nunca usé XMLSocket, pero me surge una duda, con respecto a la función myOnConnect. ¿No deberías hacer el procesamiento de los datos dentro de esa función? Es decir, si esa función da success, ahí recién continuar con el procedimiento.

Bueno, eso me llama la atención, pero es sólo una suposición, no concozco del tema.

Suerte
Califa
  #3 (permalink)  
Antiguo 13/02/2006, 09:52
 
Fecha de Ingreso: febrero-2006
Mensajes: 3
Antigüedad: 18 años, 2 meses
Puntos: 0
Hola Califa. No, ese no es el problema. Es un objeto particular xmlsocket y el procesamiento de datos se produce cuando se invoca al metodo data u onxml de una instancia suya. Pero gracias por la sugerencia. ¿Alguien se le ocurre qué puede estar pasando?
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 13:08.