Listado de usuarios en flashcom
Flashcom, flas, Como se hizo | Marzo 24th, 2004Versión para imprimir
Este tutorial es un poco más avanzado que los dos anteriores, agarraos fuerte.
Empezamos con la parte del cliente ( swf ) crearemos una entrada para introducir el nick, un campo de introducción de texto con variable nick, un stop en frame 1 y un botón que onRelease salte y se detenga en frame 2.
Bien ahora trabajaremos solamente en frame 2, crearemos un campo de texto dinámico, multilí nea y que acepte html, luego crearemos la conexión como ya sabemos:
nc = new NetConnection();
nc.connect(“rtmp:/lista”);
Aquí empieza realmente el tutorial
( espero poder saltarme estos pasos en el próximo tutorial )
Seguimos en la parte del cliente y escribiremos el siguiente código que luego explicaré:
nc.mi_nick = function() {
return nick;
};
Esta función está vinculada a nc por lo tanto podrá ser llamada desde nuestro main.asc, simplemente devuelve el nick.
Ahora vamos a la carpeta Applciations de nuestro flashcom y creamos la carpeta lista, donde colocaremos nuestro main.asc, aquí viene lo divertido ^_^
application.onConnect = function(cliente) {
this.acceptConnection(cliente);
cliente.call("mi_nick", new vincula_nick(cliente));
};
Aceptamos la conexión por parte del cliente y llamamos a la función mi_nick de dicho cliente y a la vez ejecutamos otra función que se encuentra en el main.asc
nota: .call permite la ejecución de funciones bilateralmente entre swf y main.asc ( cliente servidor )
function vincula_nick(cliente) {
this.onResult = function(resultado) {
cliente.nick = resultado;
actualiza_nicks();
};
}
Aquí lo que hacemos es que cuando recibe el resultado cree la variable nick en ese cliente especí fico y ejecutamos otra función
function actualiza_nicks() {
var nicks = new Array();
for (var i = 0; i< application.clients.length; i++) {
nicks[i] = application.clients[i].nick;
}
for (var j = 0; j< application.clients.length; j++) {
application.clients[j].call("muestra_nicks", null, nicks);
}
}
Bueno… creamos un Array y luego, en el primer for, utilizando la propiedad application.clients.length vamos llenando el array de todos los nicks de todos los clientes ( application.clients[i].nick )
En el segundo for lo que hacemos es enviar a todos los clientes el array nicks ( el null es porque no hay función de retorno )
Volvemos a flash y agregamos la función muestra_nicks que será la que nos…muestre los nicks:
nc.muestra_nicks = function(nicks) {
conectados = nicks.length;
listado.htmlText = “”;
for (var k = 0; k< conectados; k++) {
listado.htmlText += nicks[k]+“<br>”
}
};
Como veis con esta función se pueden hacer un par de cosas a simple vista, mostrar el número de conectados o en nuestro caso mostrar un listado de nicks conectados.
Ahora, si no habéis publicado todaví a la aplicación, guardar el main.asc y luego publicar con F12 en flash, así podréis abrir varias ventanas de explorer para ver el resultado ![]()
Hasta aquí el tutorial, muchas gracias por leerlo… pues no !
No encontrais algun fallo ? levantar la mano quien lo sepa
( me encantan estas cosas, tutoriales multiusuario hehe )
En el main.asc faltarí a:
application.onDisconnect = function(cliente) {
actualiza_nicks();
};
Ahora si, muy bien el chico de la fila del fondo ![]()
Javier de los Santos
http://www.oxigeno.ws
jsantos@oxigeno.ws
Marzo 24th, 2004 at 8:29 am
esta guapo, pero si no tengo el flashcom no hago nada
:(
Xavier
Marzo 24th, 2004 at 9:06 am
En la categorí a Flashcomm de este mismo Blog encontrarás todo para descargar Flashcomm para desarrollar totalmemte gratis y no caduca. (excelente idea)
http://www.after-hours.org/blog/archives/cat_flashcom.html
Descarga:
http://www.macromedia.com/cfusion/tdrc/index.cfm?product=flashcom
Marzo 24th, 2004 at 9:12 am
gracias francisco
espero que con estos tutoriales la gente se anime a trabajar con flashcom.
Marzo 24th, 2004 at 9:55 am
Hey Oxi!!
Gracias por otro magní fico tutorial, la verdad es que ya estabamos esperandolo, jeje.
salut!
Marzo 24th, 2004 at 1:02 pm
Una pregunta acerca del application.onDisconnect().
¿Cómo lo gestionas para que funcione de manera efectiva ?. Me explico , todos los que hemos trabajado con FCS al empezar hemos pensado que esté método era utilí simo y nos iba a resolver muchas cosas, pero, he aquí que empezamos a hacer pruebas y… no siempre funciona. Bien, finalmente empieza a correr el rumor, la gente empieza a investigar, y se descubre un bug ( no se sabe si del player, si del FCS, si del navegador o..pero no funciona bien )
http://www.sti-media.com/blog/archives/000034.html
( Este link es un buen ejemplo, pero no es el único sitio donde se ha tocado este tema )
A lo mejor se escapa a este tutorial y tiene que ir en otro, pero bueno, aprovecho y pregunto aquí . ¿Como gestionas efectivamente que un usuario sigue conectado o se ha ido ya? ¿llamando desde el servidor a una función del lado de cliente cada x segundos y esperando a ver si se produce respuesta?¿enviando un ping? porque sólo con application.onConnect y application.onDisconnect no se gestiona de forma efectiva ( y es una pena porque si el método onDisconnect funcionase correctamente, serí a utilí simo para un montón de cosas )
Bueno, a ver si alguien sabe. ( yo utilizo enviar cada x segundos una petición al cliente, pero esto tampoco te asegura el resultado al 100% )
Gracias por la atención, un saludo
Marzo 24th, 2004 at 1:45 pm
Sinceramente nunca he tenido problemas quizas porque trabajo siempre con nicks y lista de usuarios y a partir de allí hago lo que tenga que hacer con el array que voy renovando constantemente. No me he planteado nunca este tema porque no me ha pasado pero pensandolo bien puede tener relacion con otro “problema” que tiene flashcom y es el tema del ping que comentas, en los xml de configuración existe un parametro donde ( creo recordar ) puedes configurar el tiempo de inactividad de un usuario y si ese usuario no ha echo nada en X segundos se le desconecta y no llama a la función onDisconnect. Por lo tanto si pasa ese tiempo de inactividad y luego el cliente decide desconectar, no llamará a la función onDisconnect para que los otros usuarios tengan constancia de ello, nose si me he explicado bien. Ahora miraré los xml de configuración y te confirmo.
Marzo 24th, 2004 at 1:55 pm
Me he estado informando y el bug del que hablo “representa” que está solucionado con la versión 1.5 release 1
‘Idle timeout changed to 1 minute from 20 minutes. If a connection is idle ( no data sent or received) for more than 1 minute and it does not respond to ping, connection will be terminated.’
También parece que han arreglado el problema del setInterval ( se tendrá que probar ^_^ )
Mirate esto:
http://www.macromedia.com/support/flashcom/releasenotes/mx/rn_mx_151.html
Marzo 24th, 2004 at 3:20 pm
Saludos
gracias por la rápida contestación, pero no es ese el problema en general. De hecho, aunque MM lo niega, el problema sigue existiendo en FCS 1.5 actualizado ( yo siempre he trabajado con este ). La cosa viene que si tu usuario para desconectarse se va a otra página, o usa el botón de desconectar o se sale de la aplicación de un modo controlado por tí , no hay problema. Pero si el usuario estando en la aplicación, por ejemplo cierra el navegador, entonces no se llama ( en general ) al evento onDisconnect. Si te fijas en el artí culo que te he indicado, el tí tulo era ( mas o menos traducido ) “cuando un bug no es un bug pero es un bug", se refiere a que ocurre algo, todos sabemos que ocurre ( incluso MM ) pero lo niega. Vale, como cuando microsoft dice que sus programas de correo son seguros ( me imagino que según lo dicen les da la risa ). En fin, lo del xml del la conexión idle ya lo conocí a pero no resuelve del todo el problema. Y el setInterval, yo por un porsiacaso sigo haciendo como indica el artí culo, cada vez que lo inicio llamo a la función que sea, lo paro y lo vuelvo a iniciar, que de este modo funciona seguro.
De todos modos, reconozco que desde hace un mes y medio que cambié de curro y ciudad no tengo prácticamente tiempo ni para andar por listas de correo ni foros ni na, y a lo mejor en este tiempo alguien ha dado una solución al problema, pero la versión 1.5 no lo traí a solucionado.
Seguiremos investigando.
Gracias por los tutos y las respuestas. Un saludo
Marzo 24th, 2004 at 3:43 pm
Beuno el link que te pase era la versión 1.51 no la 1.5 pero en cualquier caso, lo que comentas que al cerrar el explorador “en general” no llama a onDisconnect, mira de montar el tutorial que he realizado de lista de usuarios, funciona perfectamente cerrando el navegador, y no es porque sea en local.
simplemente que entre todos podemos ir investigando.
No quiero que parezca que no te creo eh
Marzo 29th, 2004 at 8:09 am
Hola, pues yo soy uno de esos “animados” al flashcomm, hice el chat de prueba del site oficial , el de cierto italiano me perdone no recuerdo su name y en modo local stupendo, a excepcion de unos Indefinidos en la lista de usuarios ( completamente todos los huecos son Undefined ). Y ademas, sin nada de codigo…
Stuve el blog de este programador, voy aver kien era ….Giacomo Guilizzoni
Ingeniero de control de calidad Macromedia
y en su pphone, y la flipada de impresion no es suficiente para ciertos fallitos,que si que tiene, yo con irme de la pagina (pulsando un enlace de la propia ) y volver, ya petaba, mi nick seguia ahi, pero no podia hablar, ni reconectarme, me cuesta creer ke kareciera de un onDisconnect, o logout… lo he recomprovado,y acabo de ver que tb guarda un log, pienso que inecesario y me cambia de color con cada ida y venida :S , puede qe adrede
Esado en tu page Oxigen y he ensayado con codigo, y me gusta.
Mi pregunta para cualkiera como novato que aun soy, mediante sharedobjet sigo necesitando que en remoto, el server me de el servicio (alliance partner?) alguien tiene que ejecutar ese main no ?
Un saludo
Marzo 30th, 2004 at 4:28 pm
Para poder utilizar este script en remoto, necesitas tener un servidor web que te ofrezca hospedaje con flashcom, o comprarte el flashcom y instalarte tu mismo un pequeño servidor web. En breve pondré un tutorial acerca de estas cosas, hospedaje, precios, sugerencias etc …
Marzo 31st, 2004 at 8:37 pm
me he estado informando, x curiosidad….
primero los datos de oidas
solo funciona bajo windows :S
la licencia propia cuesta unos 700 €
los host ke he visto ke ofrezcan, como servicio, la vende por bitrate, a 64 kbits, si esto es lo ke consume x usuario, el mega soportaria 15 users :S
yo he visto, el chat,modificado, en una pajina de un mexicano con muy mala pinta, la pagina, pero no creo que este piruleado, eso de estar pegado a eeuu…….kizas solo pague y ya esta.
en managed.com 60 € al mes con 100 megas……pero en swithc, dios sabe con cuantas makinas mas y bajo linux….
Y lo mejor ke he encontrado, cierta persona me ofrece el flash comm ilimitado de conexion durante 1 unico año, por 299 € 24 € al mes
y sobre esto ultimo, si me gustaria ke me dierais opinion.
Un saludo