Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/07/2004, 08:38
MartinAcevedo
 
Fecha de Ingreso: junio-2001
Ubicación: Cordoba, Argentina
Mensajes: 190
Antigüedad: 22 años, 11 meses
Puntos: 0
la progrmacion de chat es un poco lenta en web, por el tipo de protocolo(desconectado),
normalmente si hay muchos usuarios el servidor web se puede saturar por la cantidada de conexiones que puede haber...
de todas formas si son pocos usuarios se puede hacer(por ejemplo online support)

te pongo un codigo de como seria la mecanica basica de traer mensajes...
veras que es una version limitada en js y no tiene nada de .net(lo cual deberias programar vos)

La tecnica basica es usar un iframe como buffer (doble buffering) para retener los mensajes que se van trayendo para cada cliente y cargarlos cuando este listo el contenido..
Esta tecnica se usa en applets para evitar el parpadeo del metodo run que carga la grafica del applet, y se puede usar la misma idea para que no parpadee el chat cuando traiga los mensajes

Consta de 3 files

1)el primero seria la ventana de chat.. en este caso solo hay un iframe que muestra los mensajes y otro iframe oculto que seria el buffer

2) el segundo es una archivo html que tiene la estructura para mostrar los mensajes, con un div en donde vamos a ir poniendo los mensajes que vayamos trayendo del servidor desde el buffer a ese div

3) y el tercero es la pagina que trae los mensajes....

Espero que puedas arrancar con tu chat... ! saludos

1)Chat.aspx

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>Chat</title>
<script>
function Init(){
//ESTE ES UN TIMER QUE LLAMA AL LA FUNCION CargarMensajes cada 2 segs
setInterval("CargarMensajes()",2000);
}
function CargarMensajes(){
//Carga la pagina que trae los mensajes en un iframe que se usa como buffer
window.open("TraerMensajes.aspx","Buffer");
}
function CargarBuffer(){
//esta funcion es llamada desde dentro de la pagina que trae los mensajes(window.parent)
//carga el contenido del buffer dentro de otro iframe que lo muestra
//Solamente se carga el div de mensajes de la pagina buffer(para no traer contenido de mas (como form y body)
window.frames.Mensajes.document.getElementById("Bl ankDIV").innerHTML += window.frames.Buffer.document.getElementById("Mens ajesTraidosDIV").innerHTML + '<br>';
//hace que la pagina haga scroll
window.frames.Mensajes.document.location.href="Bla nk.html?#bottom";

}

</script>
</HEAD>
<body ms_positioning="GridLayout" onload="Init();">
<form id="Form1" method="post" runat="server">
<iframe name="Mensajes" src="Blank.html"></iframe>
</form>
<iframe width="0" height="0" name="Buffer"></iframe>

</body>
</HTML>

2) Blank.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>blank</title>
</head>
<body MS_POSITIONING="GridLayout" bgColor="#eff6fb">
<!-- Plantilla de los mensajes-->

<div id="BlankDIV">
</div>
<!-- anchor para que la pagina baje cuando se cargue el buffer-->
<a name="bottom"></a>
</body>
</html>

3) TraerMensajes.aspx
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>Mensajes</title>
<script>
//Function que carga el contenido de MensajesTraidosDIV en el iframe que contiene los mensajes en el padre
function CargarBufferPadre(){
window.parent.CargarBuffer();
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" onload="CargarBufferPadre()">
<form id="Form1" method="post" runat="server" >
<!-- los mensajes que se reciban tienen que ir dentro del div-->
<div id="MensajesTraidosDIV">
Hola este es un mensaje
</div>
</form>
</body>
</HTML>
__________________
Martin