En concreto, se trata de un juego multiusuario. El programa forma
parejas de jugadores y, cuando ya está preparado para que los dos
puedan jugar, entonces cada uno de ellos hace una petición AJAX cada
segundo para actualizar su pantalla. Por esta razón pienso que
seguramente AJAX polling no es la mejor solución (imagínate, 1000
partidas simultáneas son... ¡2000 peticiones por segundo!) y por eso
estoy investigando otra solución: COMET. ¿Alguien puede aportar algo
de info sobre cómo implementar esta técnica en Cake? ;-) Pero sucede
que se me acaban los recursos, así que no me queda otra que AJAX
polling. Por cierto, ¿qué tal hacer un programa así usando sockets?
¡Gracias de antemano y saludos! Jordi
> 2009/4/17 jordicakephp <jordicake
...@gmail.com>
> > Buenas, grupo.
> > Entiendo el concepto de AJAX polling y creo que lo estoy implementando
> > bien en CakePHP con el método $ajax->remoteTimer. ¿Alguien tiene
> > alguna experiencia implementando esta técnica? Allá va un ejemplo muy
> > sencillo con esta idea. Yo lo estoy haciendo así:
> > 1. En la vista cualquier_vista.ctp escribo esto:
> > <div id="numero">
> > </div>
> > <?php
> > echo $ajax->remoteTimer ( array( 'url' => array('controller' =>
> > 'experimento', 'action' => 'numero_aleatorio', 1 ),
> > 'update' => 'nombre',
> > 'frequency' => 1
> > )
> > );
> > ?>
> > 2. En la acción numero_aleatorio esto otro:
> > function numero_aleatorio(){
> > $numero = rand(5,15);
> > $this->set('numero',$numero);
> > $this->render('numero_aleatorio','ajax');
> > }
> > 3. La vista numero_aleatorio.ctp es esta:
> > <?php
> > echo '<h1>'.$numero.'</h1>';
> > ?>
> > Y mis dudas:
> > 1. ¿Es correcta esta implementación en Cake?
> Si
> 2. ¿Qué consecuencias tiene para el servidor este ejemplo que tiene
> > una petición AJAX cada segundo?
> 1 peticion mas por segundo. Con la ventaja que es bastante liviana (este
> ejemplo, depende de cuanto haga la accion de verdad)
> 3. ¿Cuántos navegadores podrían conectarse a un servidor normal sin
> > tumbarlo?
> Es un PII, un Xeon? Es decir, depende. El uso disniado para AJAX es
> peticiones livianas (mas que recargar la pagina completa), ese es el
> beneficio.
> 4. ¿Cómo se implementaría long polling?
> Para hacer que el timeout de ajax sea mayor usa el parametro *frequency* en
> un numero relativamente alto (30 segundos?) y luego con el parametro *callback
> *(que usa * <goog_1239980773441>remoteFunction<http://api.cakephp.org/class/ajax-helper#method-AjaxHelperremoteFunction>)
> *manejas el tipo de respuesta (timeout o success). Recuerda tambien cambiar
> el tiempo de ejecucion de PHP.
> Muchas gracias de antemano y un saludo!
> - Ocultar texto de la cita -
> - Mostrar texto de la cita -- Ocultar texto de la cita -
> - Mostrar texto de la cita -