2009-08-24 19 views
35

Qualcuno può darmi un buon esempio della tecnica della cometa usando PHP?Esempio di cometa semplice con php e jquery

Ho solo bisogno di un esempio che utilizza una connessione HTTP persistente o qualcosa di simile. Non voglio usare una tecnica di polling, perché ho qualcosa di simile a quello impostato e non solo è difficile lavorare con lui e gestirne una grande quantità di risorse. Inoltre sto usando IIS7 non Apache.

Un buon esempio potrebbe essere davvero utile, così posso passare da questa brutta tecnica di polling.

+0

getclicky.com sembrano essere utilizzando il metodo di polling con discreto successo –

risposta

2

Non avendo mai utilizzato questa tecnica e studiando lo Wikipedia article sull'argomento, "Polling lungo" sembra l'unica soluzione praticabile. Sembra piuttosto semplice da implementare con il ciclo infinito e il sonno di uno script sul server. Ci sono alcuni actual code nello HTTP Streaming page collegato a dall'articolo di Wikipedia.

Hai provato qualcosa di questo e sono incappato in problemi specifici?

1

Puoi dare un'occhiata a questo article, è un buon inizio per capire i concetti di programmazione delle comete.

Troverete due esempi su di esso. Il primo usa la tecnica iframe mentre il secondo usa una connessione persistente.

14

Si dovrebbe usare polling, o utilizzare un web server che è appositamente concepita per lunghe richieste e Comet, con una buona JS backend:

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

Ricorda che COMET è "aspettare per i dati, se c'è il ritorno dei dati e uscire ", quindi il backend JS dovrà analizzare i dati e riavviare il processo di richiesta al server.

In questo esempio, se c'è un problema lato server o solo una disconnessione dal lato utente, l'intero processo sarà spezzato (la funzione viene chiamata solo se la richiesta è riuscita)

+2

+1 Great code, consiglieresti di farlo tra una richiesta e l'altra? –

+1

il server stesso dovrebbe effettuare l'effetto 'sleep', quindi il server dovrebbe attendere prima di dare la risposta fino a quando uno di questi accade (1- nuovi dati trovati, 2- richiesta scaduta) – MhdSyrwan

0

Per IIS, c'è WebSync. Dal momento che stai usando PHP, tuttavia, potresti stare meglio con WebSync On-Demand. O uno ti darà il server-push che stai cercando, ed è semplice da usare. Dai un'occhiata anche allo this questio n, che è fondamentalmente quello che stai cercando.

Ecco a simple example of WebSync On-Demand in action utilizzando no linguaggio di scripting. Basta aprire in due finestre e vedere la pubblicazione/sottoscrizione in azione.

Per pubblicare dal server, è possibile utilizzare PHP api.

6

Check this out: How to implement COMET with PHP.
Questo non sta utilizzando JQuery. È realizzato usando PHP e Prototype. È molto facile da capire Penso che tu possa fare uno script JQuery facilmente dopo averlo visto.