2012-06-14 9 views
8

Sto cercando di sviluppare un sito Web che presenta una funzione di chat tra un visitatore del sito web e l'amministratore del sito.Come sviluppare una funzione di chat XMPP basata sul web usando PHP e JQuery?

So che il modo migliore per farlo sarebbe utilizzare XMPP, tuttavia non ho esperienza nell'usarlo. Sto cercando di implementarlo usando PHP.

Ho scaricato XMPPHP e ho modificato un esempio per inviare un messaggio al mio cliente di Google Chat in GMail, ma quando rispondo a Google mi dice che l'altra estremità non ha ricevuto il messaggio.

Finora, il tutorial più informativo è http://www.ibm.com/developerworks/xml/tutorials/x-realtimeXMPPtut/ ma non capisco perché ho bisogno di installare "Openfire" né voglio creare il sito web sul mio computer locale.

Qualcuno può dirmi cosa mi serve (e, soprattutto, perché) per creare questo progetto in modo che possa iniziare a creare il codice per esso?

+0

Deve essere PHP? Deve essere XMPP? – Sixty4Bit

+0

@ Sixty4Bit scusa per il ritardo nel rispondere a voi. Deve essere PHP, non * deve essere * XMPP – P3tro

+1

Perché non provare mibew? Questo è in PHP e funziona bene. – Tanmay

risposta

8

A giudicare dai commenti di altre risposte che sto detto perché, e un po 'che cosa, ma non ti danno una soluzione perché vedo una tonnellata di soluzioni nella barra laterale "Related". Dovrai scegliere quello giusto e conoscendo "il perché" sarai in grado di prendere una decisione istruita.

Perché la chat abbia ragione, ci deve essere un po 'di immediatezza per le risposte. Un ritardo di un secondo nel tempo sarà visibile agli utenti nel tempo e darà un senso di intempestività. Per fare in modo che le risposte immediate o "in tempo reale" funzionino in un browser richiede una connessione persistente, in modo che quando arrivano nuove informazioni, si presenti immediatamente.

Le connessioni persistenti nei browser sono difficili a causa delle specifiche di richiesta/risposta di HTTP. Ci sono specifiche nel lavoro per portare connessioni persistenti ai browser ma quei browser non sono onnipresenti. In futuro le connessioni persistenti saranno fornite da WebSockets e SPDY, entrambe disponibili nelle ultime versioni di Chrome, Safari e FireFox con IE in ritardo.

Un'altra opzione per le connessioni permanenti è XMPP. XMPP è il protocollo utilizzato per il client di chat Jabber. Poiché si tratta di un'implementazione open source, è stato portato a molti altri usi. Esistono librerie JavaScript che consentono di connettere un browser a un socket XMPP e ascoltare nuovi messaggi. Il metodo che ho visto in passato è quello di inviare i messaggi al server web, e poi fare in modo che il server Web comunichi al server XMPP il nuovo messaggio che trasmette poi il nuovo messaggio a tutti gli utenti. Tuttavia, ciò richiede un server XMPP che sollevi la complessità del sistema.

La maggior parte degli utenti non è al limite delle versioni del browser, quindi sarà necessario essere in grado di gestire i browser meno recenti. La maggior parte delle alternative comporta l'apertura di una lunga connessione al server che risponde quando arrivano nuovi dati.Ecco un elenco dei metodi per la simulazione di una connessione permanente a browser più vecchi:

  • Adobe Flash Socket
  • ActiveX htmlfile (IE)
  • Eventi Server-Sent (Opera)
  • XHR con la codifica multipart
  • XHR con-polling lungo

Questi metodi più anziani, e WebSockets, sono supportati da una libreria chiamata Juggernaut.

UPDATEJuggernaut has been deprecated by the maintainer, per una buona ragione: i browser moderni supportano le connessioni persistenti fuori dalla scatola (con l'eccezione di IE, ovviamente) attraverso una specifica chiamata Eventi Server-Sent (SSE). La retrocompatibilità è ora gestita dai polyfill (What is a polyfill?) e, come le note sui post di deprecazione, ce ne sono un paio di buoni per portare l'SSE sui browser legacy.

+1

Un'eccellente risposta e introduzione al sol: il problema. Scelto come risposta. – P3tro

0
+0

Ciao. Apprezzo la tua risposta, ma non risponde alla mia domanda. Ho già cercato su Google alcuni tutorial e ciò che ho trovato non soddisfaceva le mie esigenze o erano solo soluzioni "out-of-the-box", che non è l'ideale. Voglio essere in grado di costruire questa applicazione ma non capisco le basi che è quello che sto chiedendo aiuto. – P3tro

+0

@IjazAhmedBhatti Penso che tu sia maleducato e il tuo commento non aggiunge nulla a questa discussione o al sito web. – peacemaker

0

Le applicazioni di messaggistica istantanea dovrebbero essere in tempo reale. Un sito web funziona su protocollo HTTP che utilizza il metodo richiesta/risposta. Un modo per farlo è il POLLING. inviare una richiesta di nuovi messaggi in sospeso per l'utente al server. Il server dovrebbe essere in grado di distinguere tra i messaggi che sono stati inviati e quelli che devono ancora essere consegnati. questo metodo è chiamato Polling. Il tuo browser chiede costantemente al server di inviare messaggi in sospeso. Ma questo può sprecare larghezza di banda e anche scaricare la batteria (nel caso in cui si acceda al sito Web utilizzando uno smartphone). L'opzione migliore è quella di utilizzare ancora il server XMPP.