Pregunta

Por supuesto soy consciente de Ajax, pero el problema con Ajax es que el navegador debe sondear el servidor con frecuencia para saber si hay nuevos datos.Esto aumenta la carga del servidor.

¿Hay algún método mejor (incluso mediante el uso de Ajax) otras que sondear el servidor con frecuencia?

¿Fue útil?

Solución

Sí, lo que estás buscando es un COMETA http://en.wikipedia.org/wiki/Comet_(programación).Otras buenas Google términos de búsqueda para el AJAX-empuje y retroceso-ajax.

Otros consejos

Sí, se llama Reverse Ajax o Cometa.Cometa es básicamente un término general para las diferentes formas de apertura de larga duración solicitudes HTTP para enviar datos en tiempo real a un navegador web.Me gustaría recomendar StreamHub Servidor Push, se dejan enfriar demos y es mucho más fácil empezar con que cualquiera de los otros servidores.Retirar el Introducción con el Cometa y StreamHub Tutorial para una rápida introducción.Puede utilizar la Edición de la Comunidad que está disponible para descargar de forma gratuita, pero está limitada a 20 usuarios simultáneos.La versión comercial es bien vale la pena para el apoyo a solas además de obtener SSL y Escritorio .NET & Java adaptadores de cliente.La ayuda está disponible a través de la Grupo De Google, hay un buen montón de tutoriales en la red y hay un GWT Cometa adaptador demasiado.

Hoy en día usted debe utilizar WebSockets.Este 2011 es el estándar que permite iniciar conexiones HTTP y, a continuación, actualizar a dos-direccional cliente-servidor basado en el mensaje de la comunicación.

Usted puede fácilmente iniciar la conexión desde javascript:

var ws = new WebSocket("ws://your.domain.com/somePathIfYouNeed?args=any");
ws.onmessage = function (evt) 
{
  var message = evt.data;
  //decode message (with JSON or something) and do the needed
};

El servidor-lado de manejo dependen de su tenchnology de la pila.

Mira en el Cometa (una parodia sobre el hecho de que el Ajax es un agente de limpieza y así se Cometa) que es básicamente "reverse Ajax". Ser conscientes de que esto requiere una larga duración de la conexión del servidor para cada usuario para recibir notificaciones por lo que ser conscientes de las implicaciones de rendimiento al escribir tu aplicación.

http://en.wikipedia.org/wiki/Comet_(programación)

Cometa es definitivamente lo que usted desea.Dependiendo de su lenguaje/framework requisitos, no son diferentes de las bibliotecas de servidor disponible.Por ejemplo, WebSync es un IIS-integrado cometa servidor para ASP.NET/C#/IIS los desarrolladores, y hay un montón de otros servidores independientes, así que si usted necesita una mayor integración con otros idiomas.

Me gustaría sugerir fuertemente a invertir un poco de tiempo sobre el Cometa, pero no sé una implementación real de la biblioteca o de que usted podría utilizar.

Por una especie de "callcenter" panel de control de una aplicación web que la actualización de agente de llamadas y el estado de las colas para vivir Callcenter hemos desarrollado una solución casera que funciona, pero está muy lejos de una biblioteca que se puede utilizar.

Lo que hicimos fue implementar un pequeño servicio en el servidor que se comunica con el teléfono-sistema de espera para nuevos eventos y mantiene una fotografía de la situación.Este servicio dispone de un pequeño servidor web.

Nuestra web de clientes se conecta a través de HTTP a este servidor web y preguntar por la última foto (codificado en XML), la muestra y luego se va de nuevo, preguntando por la nueva foto.El webserver en este punto puede:

  • Retorno de la foto, si es que la hay
  • Bloquear el cliente durante algunos segundos (30 en nuestro programa de instalación) a la espera de algún evento que ocurre y cambiar la fotografía.Si no hay ningún evento fue generado en ese punto, se devuelve el mismo de la foto, sólo para permitir la conexión de mantenerse con vida y no el tiempo de espera del cliente.

De esta manera, cuando los clientes de las encuestas, se obtiene una respuesta de 0 a 30 segundos máx.Si un nuevo evento fue generado ya se pone inmediatamente), de lo contrario se bloquea hasta que se genera el evento.

Se trata básicamente de votación, pero que sea un poco inteligente de votación para no sobrecalentar el servidor web.Si el Cometa no es tu respuesta, estoy seguro de que este podría ser implementado usando la misma idea, pero el uso más ampliamente AJAX o codificado en JSON para obtener mejores resultados.Este fue diseñado pre-AJAX era, así que hay mucho espacio para la mejora.

Si alguien puede dar una ligera aplicación de este, genial!

Una interesante alternativa a la Cometa es el uso de sockets en Flash.

Otro, estándar, de manera que se ESS (Server-Sent Events, también conocido como EventSource, después de que el objeto de JavaScript).

Cometa en realidad fue acuñado por Alex Russell de Dojo Toolkit ( http://www.dojotoolkit.org ).Aquí hay un enlace para obtener más información http://cometdproject.dojotoolkit.org/

Hay otros métodos.No estoy seguro si ellos son "mejores" en su situación.Usted podría tener un applet de Java que se conecta al servidor en la página de carga y espera cosas para ser enviados por el servidor.Sería un poco más lento en el arranque, pero iba a permitir que el navegador para recibir datos desde el servidor de manera poco frecuente, sin votación.

Usted puede utilizar un Flash/Flex aplicación en el cliente con BlazeDS o LiveCycle en el lado del servidor.Los datos pueden ser empujados a el cliente mediante una conexión RTMP.Ser conscientes de que RTMP utiliza un puerto no estándar.Pero usted puede fácilmente caer de nuevo a votación si el puerto está bloqueado.

Es posible lograr lo que te refieres a través del uso de conexiones http persistentes.

Retirar el Cometa artículo más en la wikipedia, que es un buen lugar para empezar.

No va a proporcionar mucha información, pero si usted está buscando en la construcción de algún tipo de evento impulsado por sitio (a'la digg espía) o algo a lo largo de las líneas de que probablemente se busca en la aplicación de un IFRAME oculto que se conecta a una dirección url en donde la conexión se cierra nunca y, a continuación, usted va a empujar script-etiquetas desde el servidor al cliente para realizar las actualizaciones.

Podría ser digno de la comprobación hacia fuera Meteor Servidor que es un servidor web diseñado para la COMETA.Bonito demo y también es utilizado por twitterfall.

Una vez que se abre una conexión con el servidor que lo puede mantenerse abierta y el servidor puede Empujar el contenido hace tiempo me hice con el uso de multipart/x-mixed-replace pero esto no funciona en IE.

Creo que se puede hacer cosas inteligentes con el sondeo que hace que funcione más como empuje por el no envío de contenido sin cambios encabezados, pero dejando abierta la conexión, pero nunca he hecho esto.

Usted puede probar nuestra Cometa Componente - aunque es muy experimental...!

por favor revise esta biblioteca https://github.com/SignalR/SignalR para saber cómo insertar datos a los clientes de forma dinámica a medida que esté disponible

También puede buscar en Java Pushlets si usted está usando las páginas jsp.

Puede que desee ver en ReverseHTTP también.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top