2009-08-24 12 views
35

¿Alguien puede darme un ejemplo bueno y simple de la técnica de cometa usando PHP?Ejemplo de cometa simple usando php y jquery

Solo necesito un ejemplo que use una conexión HTTP persistente o algo similar. No quiero utilizar una técnica de sondeo, porque tengo algo así como configuración y no solo es difícil trabajar y administrar es una gran fuente de recursos. También estoy usando IIS7 no Apache.

Un buen ejemplo sería realmente útil para poder pasar de esta fea técnica de sondeo.

+0

getclicky.com parecen estar usando el método de votación con bastante éxito –

Respuesta

2

Nunca habiendo usado esta técnica y estudiando el Wikipedia article sobre el tema, "Long Polling" parece ser la única solución viable. Suena bastante simple de implementar haciendo un bucle infinito y durmiendo un script en el servidor. Hay algunos actual code en el HTTP Streaming page vinculado desde el artículo de Wikipedia.

¿Ha probado algo de esto y ha tropezado con problemas específicos?

1

Puedes echar un vistazo a este article, es un buen comienzo para entender los conceptos de programación de cometas.

Encontrarás dos ejemplos en él. El primero usa la técnica iframe mientras que el segundo usa una conexión persistente.

14

Debe utilizar el sondeo, o utilizar un servidor web que está especialmente concebido para solicitudes largas y Comet, con una buena JS backend:

function listen() { 
    $.get("/mylongrequestfile", {}, function(data) { 
     $("#mydiv").html(data); 
     listen(); // then launch again 
    })); 
}; 

Recuerde que el cometa es "esperar a los datos, si hay retorno de datos y salir ", por lo que JS backend tendrá que analizar los datos y volver a iniciar el proceso de preguntar al servidor.

En este ejemplo, si hay un problema en el servidor o simplemente una desconexión desde el lado del usuario, todo el proceso será roto (la función sólo se llama si la petición tiene éxito)

+2

+1 Gran código, ¿recomendaría hacer esta pausa entre las solicitudes? –

+1

el servidor en sí debería hacer el efecto de 'suspensión', por lo que el servidor debería esperar antes de dar la respuesta hasta que ocurra uno de estos (se encontraron 1 nuevos datos, se agotó el tiempo de solicitud 2) – MhdSyrwan

0

Para IIS, hay WebSync. Sin embargo, dado que está usando PHP, es posible que esté mejor con WebSync On-Demand. Cualquiera de los dos le dará el empuje de servidor que está buscando y es fácil de usar. Echa un vistazo a this questio n también, que es básicamente lo que buscas.

Aquí está a simple example of WebSync On-Demand in action usando no lenguaje de scripting. Simplemente abra en dos ventanas y vea publicar/suscribirse en acción.

Para publicar desde el servidor, puede usar el PHP api.

6

mira esto: How to implement COMET with PHP.
Esto no está utilizando JQuery. Está hecho usando PHP y Prototype. Es muy fácil de entender. Creo que puedes hacer una secuencia de comandos JQuery fácilmente después de ver esto.