Comunidad de diseño web y desarrollo en internet

ClabServer - Referencia del programador

El servidor multiusuario ClabServer es un conjunto de clases de PHP y Actionscript que, apoyadas en Flash Remoting y AMFPHP, permiten crear, sin necesidad de tener un servidor dedicado, chats, juegos multiplayer o todo tipo de aplicaciones con la capacidad de interacción al mismo tiempo de varios usuarios conectados.

Si eres principiante, lee primero los siguientes tutoriales
Instalación del ClabServer
Crear un chat en Flash

Si eres programador y quieres empezar a programar por tu cuenta aplicaciones multiusuario, pero no tienes muchos conocimientos de base en Flash, lee los siguientes tutoriales:
Tutorial de Actionscript 2.0
Programación orientada a objetos en Actionscript

Clases del ClabServer

Tal como se ve en el tutorial de instalación; el ClabServer esta compuesto por 3 clases de Flash y 1 clase de PHP; de estas, solo dos nos interesan, “Servidor” y “Usuario”, que son las que usaremos al crear aplicaciones con el ClabServer

Características del ClabServer

  • Aplicaciones multiusuario sin servidores dedicados
  • Software libre, de código abierto y gratuito (Liberado con licencia LGPL)
  • Usable en proyectos comerciales y de producción
  • Permite envío de texto (Para chats, por ejemplo)
  • Permite envío de objetos (Tipo de datos Object) (Para juegos multiplayer, por ejemplo)
  • Permite acceso restringido a usuarios registrados o acceso general a usuarios anónimos (Sin registro en la base de datos) o ambos.
  • Permite múltiples“salas de chat” o canales de transmisión multiusuario
  • Control de errores de conexión y desconexión de un usuario
  • Registro permanente de conversaciones y transacciones de objetos en todos los canales (Con MySQL)
  • API de programación sencillo y extensible

Usuarios Registrados

El ClabServer incluye una base de datos especial de usuarios registrados que puede servir para crear login de usuarios a través de la clase “Usuario”.

También puede servir para crear “nicks restringidos” en los chats anónimos, ya que si un usuario intenta entrar como anónimo con un nick registrado en la base de datos, la clase Usuario devolverá el error especifico.

Para mas información, ver la clase “Usuario”

Clase Usuario

import ClabServer.Usuario;

Constructor

var user:Usuario = new Usuario();

Descripción

La clase Usuario es la encargada de administrar el usuario individual conectado al ClabServer; esta alberga los métodos de login al servidor (Revisando que no hayan nicks repetidos), validación si es un usuario registrado o registro si es un usuario anónimo

Así mismo, tiene datos como el ID interno del usuario y el nick original con el que entro a la aplicación.

Crear una instancia de esta clase es un parámetro obligatorio al usar el ClabServer; sea que creemos una aplicación para usuarios anónimos o registrados.

Métodos

Usuario.login()

Uso

user.login(nombreDeUsuario:String, contraseña:String, anónimo:Boolean); 

Descripción

El método principal de la clase Usuario es usado para que el nick de un usuario quede registrado como "conectado" a una aplicación creada con el ClabServer; sirve tanto para usuarios registrados como para usuarios anónimos
Es obligatorio en todas las aplicaciones que usen el ClabServer usar por lo menos una vez este método

Parámetros

nombreDeUsuario: Una cadena de texto que indica el nick con el que el usuario entrara a la aplicación o el nombre de usuario en caso de ser un usuario registrado en la base de datos de usuarios del ClabServer.
contraseña: Una cadena de texto que envía al servidor la contraseña de acceso en caso de que nombreDeUsuario sea un usuario registrado en la base de datos. Solo se tiene en cuenta si el parámetro anónimo es false.
anónimo: Un valor booleano que si es verdadero, dará acceso anónimo al usuario y si es falso, validara nombre de usuario y contraseña en la base de datos de usuarios.

Ejemplo

import ClabServer.Usuario; 
var user = new Usuario();
var reg = new Usuario();
//Un usuario "luser" entrara como anónimo
user.login("luser", "", true);
//Un usuario "freddie" con contraseña "pass" entra como usuario registrado 
reg.login("freddie", "pass", false);   

Eventos

Usuario.onLogin

Uso

user.onLogin = function(respuesta:Number) {
	// código de manejo aquí
}

Descripción

Evento ejecutado después de invocar al métodologin de la clase Usuario, devuelve un parámetro que indica si hubo o no éxito en el proceso de login al sistema ClabServer.

Sirve de igual manera si el login es de un usuario anónimo o registrado.

Parámetros

respuesta: Un numero que devuelve una lista de códigos de estado de acuerdo a si el login fue o no exitoso
Posibles respuestas:

  • Usuario.EN_USO (En caso de que el nick ya este siendo usado)
  • Usuario.REGISTRADO (En caso de entrar como anónimo y el nick este en la base de datos de usuarios registrados)
  • Usuario.PASSWORD (En caso de entrar como usuario registrado y el password no coincida)
  • Usuario.NO_EXISTE (En caso de entrar como usuario registrado y el nick no este en la base de datos)
  • Usuario.OK (En caso de no haber problemas y haber entrado con éxito)

Ejemplo

usuario.onLogin = function(respuesta) {
	switch (respuesta) {
		case Usuario.EN_USO :
			aviso_txt.text = "El nick esta en uso";
			break; 
		case Usuario.REGISTRADO : 
			aviso_txt.text = "El nick esta registrado";
			break; 
		case Usuario.OK : 
			gotoAndStop(2);
			break;
		}
};

Propiedades

Usuario.ID

Uso

user.ID:Number;

Descripción

Devuelve el numero identificador del usuario en la base de datos, solo si es un usuario registrado; en caso de ser usuario anónimo, devolverá -1.
Solo puede usarse después de que el evento “onLogin” fue exitoso.

Ejemplo

var miPropioID:Number = user.ID;

Usuario.nusuario

Uso

user.nusuario:String;

Descripción

Devuelve el nick del usuario, sea registrado o anónimo
Solo puede usarse después de que el evento “onLogin” fue exitoso.

Ejemplo

nick_txt.text = "Tu nick es : "+user.nusuario;

Clase Servidor

import ClabServer.Servidor;

Constructor

var server = new Servidor(usuario:Usuario, numeroSala:Number);

Descripción

La clase Servidor es la clase central del ClabServer; esta se encarga de enviar y recibir los mensajes multiusuario enviados a un canal del ClabServer. En su constructor pide por parámetro el usuario que va a entrar a la sala (Canal de transmisión) y el numero de sala.
Es esta la clase que enviaría cada mensaje enviado a un chat y sus eventos recibirían uno por uno los mensajes enviados por nosotros u otras personas.

No es obligatorio crear una instancia de "Servidor" en una aplicación que use el ClabServer; pero si es ilógico no hacerlo, a menos que solo estés interesado en la parte del "login" de la clase Usuario.

Métodos

Servidor.enviar()

Uso
server.enviar(mensaje:String);
Descripción

Envía un mensaje al canal o sala elegida en el constructor de la clase (numeroSala), este mensaje será recibido por todos los usuarios conectados a esta sala.

Parámetros

mensaje: Cadena de texto (Tipo String) que se enviara como mensaje de conversación a la sala especificada en el constructor de la instancia de "Servidor" a la que invocamos al ejecutar el método Será recibido por todos los usuarios conectados a la sala.

Ejemplo

Imaginando que tenemos un campo llamado "mensaje_txt" donde esta el mensaje de la conversación y un botón llamado "send_btn" que al darle click enviara el mensaje al servidor.

send_btn.onRelease = function() {
server.enviar(mensaje_txt.text);
}

Servidor.enviarObj()

Uso

server.enviarObj(objeto:Object);

Descripción

Envía una variable de tipo Object junto con todas sus propiedades al canal o sala elegida en el constructor de la instancia de "Servidor". Funciona igual que la función "enviar"

Nota para desarrolladores avanzados: Solo se envían las propiedades de un objeto; de modo que no puedes enviar funciones como propiedades del objeto a enviar mediante el métodoenviarObj

Parámetros

objeto: Una variable de tipo Object a la que puedes agregar propiedades de tipo Number o String; estas serán recibidas tal como fueron enviadas por todos los usuarios conectados a la sala.

Ejemplo

var alumno:Object = new Object();
alumno.edad = 20;
alumno.nombre = "Freddie®";
alumno.codigo = 1337;
enviarAl_btn.onRelease = function() {
server.enviarObj(alumno);
}

Eventos

Servidor.onMensaje

Uso

server.onMensaje = function (mensaje:Object) {
//Su código aquí
}

Descripción

Evento que se ejecuta al recibir un nuevo mensaje de texto (Enviado con el método enviar de la clase Servidor) en la sala.
Por parámetro llegan tanto el nick como el mensaje del usuario que lo envió.

Parámetros

mensaje: Un objeto con dos propiedades; mensaje.Nick que nos devuelve el nick del usuario que envió el mensaje y mensaje.Mensaje, que tiene el mensaje enviado; ambos son de tipo String.

Ejemplo

Tomando por hecho que chat_txt es un campo de texto multilinea donde irán apareciendo los mensajes recibidos.

server.onMensaje = function(mensaje:Object) {
chat_txt.text += "<"+mensaje.Nick+"> "+mensaje.Mensaje+"\n";
};

Servidor.onLista

Uso

server.onLista = function (usuarios:Array) {
//Su código aquí
}

Descripción

Al conectarse al servidor, este evento devuelve una lista de los usuarios conectados actualmente. Un Array de objetos con el nick e ID de usuario en la base de datos en caso de ser usuarios registrados; si es un chat anónimo, devolverá el valor -1, pero igual dará el nick.

Parámetros

usuarios: Un array de objetos que contiene el nombre de usuario y el ID de usuario en la base de datos de los usuarios conectados al servidor actualmente; los usuarios anónimos conectados tendrán un ID de -1.

Ejemplo

Tomando por hecho que lista_txt es un campo de texto multilinea con la lista de los usuarios.

server.onLista = function(usuarios:Array) {
for(i in usuarios){ //Añadimos a la lista el nick del usuario "i" conectado lista_txt.text += usuarios[i].Nick; //Por la ventana del output en Flash mostraremos en ID del usuario //Este será -1 si es un usuario anónimo trace(usuarios[i].ID); }
};

Servidor.onEntrada

Uso

server.onEntrada = function (nuevo:Object) {
//Su código aquí
}

Descripción

Cada vez que un usuario se conecta al chat, este evento es ejecutado, por parámetro llegan ID y Nick del usuario recién llegado.

Parámetros

nuevo: Un objeto con dos propiedades, ID, que devuelve el ID en la base de datos del usuario recién llegado y Nick, que contiene el nick del usuario nuevo.

Ejemplo

Tomando por hecho que chat_txt es un campo de texto multilinea donde irán apareciendo los mensajes recibidos.

server.onEntrada = function(nuevo:Object) {
chat_txt.text += nuevo.Nick+" ha entrando al chat. \n";
};

Servidor.onSalida

Uso

server.onSalida = function (sale:Object) {
//Su código aquí
}

Descripción

Al desconectarse un usuario de una aplicación creada con el ClabServer, este evento es ejecutado; por parámetro recibe al igual que onEntrada, el ID y el nick del usuario recién salido.

Parámetros

sale: Un objeto con dos propiedades; sale.Nick que nos devuelve el nick del usuario que acaba de salir y sale.ID, que tiene el código o ID en la base de datos, del usuario que recién sale, este valor será-1 si el usuario era un usuario anónimo

Ejemplo

Tomando por hecho que chat_txt es un campo de texto multilinea donde irán apareciendo los mensajes recibidos.

server.onSalida = function(sale:Object) {
chat_txt.text += sale.Nick+" ha salido de la sala. \n";
};

Servidor.onObjeto

Uso

server.onObjeto = function (objeto:Object) {
//Su código aquí
}

Descripción

Evento que se ejecuta al recibir un objeto enviando por el método enviarObj de la clase Servidor.

Parámetros

objeto: Un objeto con las mismas propiedades del objeto que llega en el evento onMensaje (Mensaje y Nick); pero la propiedad Mensaje es un objeto que llega con las propiedades que fueron enviadas usando el método enviarObj de la clase Servidor.

Ejemplo

server.onObjeto = function(objeto:Object) {
chat_txt.text += "Ha llegado un objeto \n";
trace(objeto.Mensaje);
};

Servidor.onLag

Uso

server.onLag = function (lag:Number) {
//Su código aquí
}

Descripción

Un evento que va actualizando el "lag" del servidor; que es el retardo entre el envió de un mensaje y la recepción del mismo.

Parámetros

lag: Un valor numero en milisegundos que determina la velocidad de respuesta del servidor, se actualiza cada vez que se ejecuta el evento "onLag".

Nota: Los valores de lag normales van desde 100 hasta 3000; números menores a 1000 implican una buena velocidad de conexión y mayores a 1000 una mala velocidad de conexión.

Ejemplo

Tomando por hecho que lag_txt es un campo de texto que ira actualizando el valor del retardo.

server.onLag = function(lag:Number) {
lag_txt.text = lag;
};

Servidor.onError

Uso

server.onError = function () {
//Su código aquí
}

Descripción

Cuando hay algún error en la conexión local del usuario conectado, como desconexión física de Internet o problemas en el servidor remoto; el ClabServer ejecuta este evento.

Ejemplo

server.onError = function() {
getURL("salida.html"); fscommand("quit");
};

Propiedades

Servidor.conectados

Uso

server.conectados:Number;

Descripción

Devuelve la cantidad de usuarios conectados al momento de pedir el valor; se actualiza a la misma velocidad del lag en el evento onLag

Ejemplo

conectados_txt.text = "Hay "+server.conectados+" usuarios conectados";

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Descargar Archivo

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate