Author Topic: Una gran duda  (Read 3451 times)

rfilgueiras

  • Jr. Member
  • **
  • Posts: 79
  • Karma: 0
    • View Profile
    • Blog de programación
Una gran duda
« on: Junio 19, 2007, 04:49:26 pm »
He creado una aplicación de ventas en la cual un cliente realiza un pedido que se almacena en un servidor y tiene que ser servido rápidamente. Mi primera idea era enviar un correo electrónico a la persona que tiene que servirlo pero no era lo más adecuado.

Entonces se me ocurrió crear un jsp que lanza un timer con javascript cada 5 minutos y cuando el timer finaliza llama al servidor y comprueba si hay nuevos pedidos, si hay nuevos pedidos se lo envía al cliente que lo está pidiendo. No es una mala solución, pero se está realizando una petición al servidor cada 5 minutos y no me gusta aunque es la solución que se está aplicando.

Se me ocurrió también algo parecido a un chat, para lo cual se tiene que crear una aplicación java que resida en el servidor y un cliente que se conecte a dicho servidor, pero le veo el problema que se tiene que lanzar esta aplicación en el servidor y no es lo más adecuado porque el servidor no es propio sino que está compartido con otra gente, o sea que es de un proveedor web.

En principio estoy utilizando la segunda opción pero no me convence del todo. ¿Alguien conoce alguna otra solución al problema?

Gracias,
Rodrigo

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5472
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Una gran duda
« Reply #1 on: Junio 19, 2007, 06:10:19 pm »
Hola:

El problema que veo con esas opciones es que dependen de que la persona que tiene que servir el pedido esté en línea. Si cierra el navegador, el javascript no va.

¿Por qué descartas lo del correo?

Se bueno.

rfilgueiras

  • Jr. Member
  • **
  • Posts: 79
  • Karma: 0
    • View Profile
    • Blog de programación
Re: Una gran duda
« Reply #2 on: Junio 19, 2007, 07:12:13 pm »
La persona estará siempre en línea. Lo que ocurre es que se tendrá que estar llamando continuamente al servlet y eso es lo que no me gusta ya que en cada llamada el servlet devolverá una página web con el consumo de ancho de banda que ello conlleva.

En cuanto a lo del correo electrónico no les gusta porque puede llegarles y no enterarse.

Otra cosa que se me ocurrió, aunque tampoco me convence demasiado es que cuando la persona que está en línea hace un sondeo para saber si le ha llegado algún pedido, el servlet al que llama se quede en un bucle hasta que detecta que ha recibido pedidos, pero no sé como esto afectará al rendimiento.

rfilgueiras

  • Jr. Member
  • **
  • Posts: 79
  • Karma: 0
    • View Profile
    • Blog de programación
Re: Una gran duda
« Reply #3 on: Junio 21, 2007, 02:15:01 pm »
Estoy mirando si AJAX me aporta alguna ventaja para hacerlo, aunque todavía no lo tengo muy claro. Bueno, si aporta algo ya que no se recargará la página completa nunca por lo que ahorro ancho de banda como mínimo.

Ya pondré los resultados en www.blog.riolambre.com.

Pero si alguien conoce alguna otra forma de hacerlo o de orientarme por otro camino ...

Saludos,

venkman

  • Jr. Member
  • **
  • Posts: 68
  • Karma: 0
    • View Profile
Re: Una gran duda
« Reply #4 on: Junio 21, 2007, 03:51:35 pm »
5 minutos no me parece excesivo. Si lo haces con AJAX (o similar) sólo necesitas devolver unos pocos bytes en cada llamada. Pongamos 100 bytes (que seguramente será menos).

100 bytes cada 5 minutos => 1200 bytes cada hora => 9,5 Kb por un día de 8 horas.

Incluso si lo hicieras cada minuto, serían menos de 50Kb en un día de 8 horas. Esto por cada persona que esté conectada monitorizando. No es mucho, creo yo.



De todos modos, yo creo que el correo es más adecuado. De hecho, me parece más fácil que terminen minimizando la ventana del navegador y que no se den cuenta de eso, que no vean que tienen un mensaje de correo nuevo (el cliente de correo suele sacar una ventanita de aviso diciendo que tienes nuevos mensajes).

rfilgueiras

  • Jr. Member
  • **
  • Posts: 79
  • Karma: 0
    • View Profile
    • Blog de programación
Re: Una gran duda
« Reply #5 on: Junio 21, 2007, 04:11:11 pm »
También es posible combinar las dos cosas ...

 

ey