Chat en Asp

Hola, yo quería realizarte una consulta que hasta ahora en ningún lado supieron decirme, por eso recurro a un experto. Estoy haciendo un chat en asp, y todo me funciona bien, pero me falta un detalle y es el tema de actualizar el frame
donde se muestran los mensajes, pero no a través de un refresco cada por segundos, ya que esto hace un pantallazo molesto, sino que quiero hacer algo
como el chat del cual te paso ahora la url para que veas como en el se agregan
mensajes sin que la página termine de cargarse del todo y de esta manera cada vez que hay un mensaje nuevo se añade al final. La url de este chat para que entres directamente es esta :
http://chathtml.elsitio.com:4011/&RELOAD=1&&USER=Luisa&VERBOSE=0&HISTORY=4&NOPIC=0&
asi entrarias con nick Luisa.
No entiendo que usa para actualizar los mensajes sin que se recargue la página.
Para ver este chat funcionando a full tienes que entrar de noche o tardecita.
Solo me falta esto para terminar mi chat, así que por favor necesito una respuesta porque probé de todo pero no logro actualizar los mensajes de esta manera.
Muchísimas gracias.
Besos.
Laury
1

1 Respuesta

99.500 pts.
A ver, lo primero decirte que esa página no es una página ASP, lo cual te puede inducir a confusión. Lo que hace esa página es lo siguiente:
EN lugar de generar UNA página y acabar, lo que hace es generar la página continuamente, o sea, que la página no acaba de generarse nunca. Eso en ASP se podría hacer, solo que tendrías que desactivar el timeout de respuesta de la página, pues pasado un cierto tiempo sin finalizar la respuesta de una página, el servidor envía un Timeout Response.
Lo que tendrías que hacer en el caso de que quieras hacerlo así es meter a la página en un loop y que fuera leyendo de un fichero externo -el buffer del chat- si este cambia. Si cambia, leer el cambio y añadirlo a la generación de la página.
Pero no te lo aconsejo. ¿Por qué? Bueno por varios motivos. El más importante es que tendrás al Servidor ocupado en generar esta página -que no tiene fin- durante todo el rato. Y los servidores web no están optimizados para esto. Una vez que tuvieses un numero de usuarios grande el sistema se volvería muy lento e inestable. Aunque, aya tu si lo quieres probar :-). Sinceramente te recomiendo el método del refrescos, aunque claro esta, el ASP no es para esto... pero se puede hacer.
Al fin alguien me pudo aclarar el tema, pero me quedan un par de aclaraciones. Te comento que este chat lo estoy realizando ha pedido
de un cliente que esta habituado a usar el chat de esa dirección que
te pase y quería uno parecido. De manera que la página estará en un servidor de hosting NT.
1) ¿En ppio me decís que no esta hecho en Asp?, ¿En qué esta desarrollado?
2) ¿Para simularlo en Asp como desactivo el timeout de respuesta de la página?
3) Yo todos los mensajes los almaceno en variables application, ¿los debería almacenar en un archivo para poder hacer el loop o puedo hacer un loop de otra forma e ir chequeando estas variables?
4) ¿Tiene sentido intentar este método o como me decís se va a colgar cuando tenga 30 o más personas en el chat?
5) Si la única que me queda es el refresco, lo único malo de esto es si yo voy agregando los mensajes al final de la página cada vez que recarga el scroll vertical vuelve al tope y hay que bajarlo para ver los últimos mensajes, y la otra si uso una función para que scrolee sola hasta el final, se va viendo como baja el scroll y es muy molesto.
Disculpa tantas preguntas, pero me trabe en esta parte del chat del mostrado de mensajes y no puedo seguir.
Aclarame estas cositas que estas camino al Excelente.
Laury
Te respondo a las preguntas
1- No, no esta echo en asp. Intuyo que puede estar echo o bien con una clase de Java, o bien con un CGI programado expresamente.
2- Para desactivar el timeout tienes puedes hacerlo con el objeto SERVER
- - - - - -
ScriptTimeout
La propiedad ScriptTimeout especifica la cantidad máxima de tiempo que se puede ejecutar una secuencia de comandos antes de que se termine.
El tiempo de espera no tiene ningún efecto mientras se procesan los componentes del servidor.
Sintaxis
Server.ScriptTimeout = NúmeroSegundos
- - - - - - -
3- Almacenarlos en una variable de Application no es lo más optimo. Mi consejo es que cuanto menos se toquen las variables de Sesión y de Aplicación mejor. Lo que tienes que tener es un fichero Buffer. En ese fichero buffer Leerás de la linea A a la linea B. Eso sera lo que retornes a cada usuario. De esta manera con que gestiones eficientemente ese buffer podrás mostrar el chat eficientemente -o sea, una vez que el fichero ocupe mucho limpias la parte inicial.
4- Cuando tengas muchos usuarios se colgara, porque los scripts no finalizaran. O no se colgara pero el servidor ira de pena. Aunque existe una forma de detectar si el usuario esta conectado o no, y eso a lo mejor te serviría:
------
IsClientConnected
La propiedad IsClientConnected es una propiedad de sólo lectura que indica si el cliente se ha desconectado del servidor desde la última operación Response. Write.
Sintaxis
Response.IsClientConnected ( )
---------
5 - creo que esta te la he respondido con lo anterior. Si tienes más dudas dímelo, ¿ok?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas