tiempo software real programa para papel monkey hacer gratis encuestas encuesta aplicaciones javascript http comet real-time long-polling

javascript - real - software para encuestas gratis



¿Encuesta corta versus encuesta larga para aplicaciones web en tiempo real? (3)

Si desea obtener una aplicación en tiempo real basada en la base de datos, puede usar la combinación de encuesta larga y cometa ajax. La encuesta larga es realmente buena para tu ancho de banda y también es muy útil para usuarios MB. Porque cuando el usuario envía una solicitud, el usuario paga como MB o algún tipo de conexión a Internet. Por ejemplo, para encuestas cortas cuando haces algo como enviar solicitudes por el segundo uso de Internet del usuario será mayor porque cada usuario de conexión lo pagará (Significa que el usuario pierde Mb), pero en el usuario de larga duración solo pagará por los mensajes nuevos.

Websocket es realmente algo bueno, pero cuando lo use, debería pensar en un gran problema que muchas personas no pueden usar el sistema de chat porque Websocket es solo para una nueva versión de los navegadores.

Estoy construyendo una aplicación web en tiempo real Hasta donde yo sé, las opciones más populares son las encuestas cortas y las encuestas largas. ¿Cuáles son las ventajas y desventajas que puede haber para medir una sobre la otra?


Solo por el bien de la discusión.

Ambos son http request (xhr), y es al menos parcialmente falso, utiliza más recursos de servidor (depende totalmente de la tecnología, se explicará más adelante).

Encuesta corta

Gran cantidad de solicitudes que se procesan a medida que vienen en el servidor. Crea mucho tráfico (utiliza recursos, pero los libera tan pronto como se envía la respuesta):

00:00:00 C-> Is the cake ready? 00:00:01 S-> No, wait. 00:00:01 C-> Is the cake ready? 00:00:02 S-> No, wait. 00:00:02 C-> Is the cake ready? 00:00:03 S-> Yeah. Have some lad. 00:00:03 C-> Is the other cake ready? ..

Sondeo largo

Una solicitud va al servidor y el cliente está esperando que llegue la respuesta (está sin resolver). En el caso de Servidor con php / apache significaría un hilo generado para manejar, que reserva recursos, hasta que esté hecho. Entonces, el tráfico es más pequeño, pero consume sus recursos rápidamente (o más bien bloquea los recursos). Pero si usa por ejemplo Node (o cualquier otro enfoque asincrónico - c ++ qt por ejemplo), puede minimizar potencialmente el uso de recursos (almacenar el objeto de respuesta para la solicitud http y usarlo cuando el trabajo esté listo)

12:00 00:00:00 C-> Is the cake ready? 12:00 00:00:03 S-> Yeah.Hame some lad. 12:00 00:00:03 C-> Is the cake ready?

Si lo comparas con un sondeo corto, verás que potencialmente en una encuesta corta usaste más transferencia, pero durante esos 3 realmente tomas 1,5 s del tiempo de procesamiento (significa que algo podría ejecutarse entre tus llamadas). En caso de una encuesta larga, los mismos recursos se usaron todo el tiempo. Ahora, por lo general, php con todas las librerías comienza con una memoria de 4MB, entonces usted tiene un marco de 4-20MB. Supongamos que tiene 1024 MB de RAM disponible (gratis). Diga que seamos pesimistas y supongamos que usará 25 MB por cada instancia de php. Significa que solo puede obtener hasta 40 scripts de conexión largos sondeados.

Es precisamente la razón por la que podría servir potencialmente mucho más con Node, ya que el nodo no engendraría sus instancias (a menos que desee usar trabajadores, etc.), por lo que con la misma memoria probablemente pueda conectarse fácilmente a 10k conexiones. Obtendrá un aumento en la CPU, ya que se producirán, y cuando serán liberados, pero cuando están inactivos es como si no estuvieran allí (usted paga solo por las estructuras de memoria que mantendría en el nodo / c ++).

Websocket

Ahora, si desea enviar algunas cosas, siempre que estén dentro o fuera del cliente, busque los websockets (protocolo ws). La primera llamada es el tamaño de la solicitud http, pero luego usted envía solo los mensajes, del cliente al servidor (nuevas preguntas) y del servidor al cliente (respuestas o intentos, incluso puede transmitir para todos los clientes conectados). Hay librerías de websocekts de php, pero de nuevo, utiliza alguna tecnología diferente, preferiblemente nodo o c ++.

Algunas librerías, como socket.io, tienen una jerarquía propia, por lo que cuando websocket falla, vuelve a la consulta larga o corta.

Cuándo usar.

Encuesta corta - bueno, nunca ^^.

Encuesta larga : potencialmente cuando está intercambiando una sola llamada con el servidor, y el servidor está trabajando en segundo plano. También cuando ya no consultas al servidor en la misma página. También cuando no está utilizando php como capa para manejar la conexión larga sondeada (node ​​/ c ++ puede ser una simple capa intermedia). Tenga en cuenta que un sondeo largo puede ser realmente beneficioso, pero solo cuando lo hace así.

Websocket : posiblemente intercambiará más de una o dos llamadas con el servidor, o puede que algo provenga del servidor que no esperaba / solicitó, como una notificación de correo electrónico o algo así. Deberías planificar diferentes "salas", depender de las funcionalidades. Adopta la naturaleza basada en eventos de javascript;]


  • Sondeo corto (también conocido como temporizador basado en AJAX):

    Pros: más simple, no consume mucho tiempo (si el tiempo entre solicitudes es largo).
    Contras: malo si necesita que se le notifique CUANDO el evento del servidor ocurre sin demora. Example (basado en ItsNat )

  • Encuesta larga (también conocida como Comet basada en XHR)

    Pros: recibe una notificación CUANDO el evento del servidor ocurre sin demora. Contras: recursos de servidor más complejos y más utilizados. Example (basado en ItsNat)