2010-01-15 7 views
5

Ich interessiere mich für eine wirklich gute Art und Weise Instant Messaging wie Meebo und Facebook und MySpace haben alle, auch für Benachrichtigungen auf einer Seite. Beispiel auf meiner Website, wenn ein Benutzer eine neue E-Mail-Nachricht, einen Foto-Kommentar, einen Profil-Kommentar, eine Freundschaftsanfrage oder andere Dinge erhält, erhalten sie eine Benachrichtigung und einen Link auf der Seite, auf der sie jQuery und AJAX verwenden.Die beste Möglichkeit, Benachrichtigungen und Nachrichten LIVE auf einer Webseite anzuzeigen?

Ich glaube in großem Umfang, dass dies nicht der beste Weg ist, es zu tun, da mein jquery Code grundsätzlich ein PHP-Skript ausführen muss, um die mysql-Tabelle alle 30 Sekunden für jeden Benutzer abzufragen, der die Seite hat Öffnen Sie mit diesem Skript ausgeführt werden. Ich möchte schließlich eine Art Instant Messaging hinzufügen, wie es Facebook in einer Chat-Leiste am unteren Bildschirmrand hat, wenn ich einen effizienten Weg finde, es zu tun.

Ich habe die Begriffe Comet und HTML5 WebSockets gehört, aber ich bin mir nicht sicher, ob dies die Lösungen sind, die ich für solch eine Funktion betrachten sollte? Ich möchte die Bandbreite auf ein Minimum beschränken und das Ausführen einer Abfrage alle paar Sekunden scheint auf einer Website mit hohem Datenverkehr nicht sehr effizient zu sein.

Wenn Sie ein paar gute Lösungen kennen, bitte erklären, wie sie

Antwort

1

Ich denke, Facebook nutzt XMPP für ihre Chat, so haben einen Blick auf sie.

XMPP ist

eine offene Technologie für die Echtzeit-Kommunikation, welche Kräfte eine breite Palette von Anwendungen, einschließlich Instant Messaging, Präsenz, Multi-Party-Chat, Sprach- und Videoanrufe, collaboration, leichte Middleware, Content Syndizierung und verallgemeinertes Routing von XML-Daten.

Sie würden eine separate server installieren Messaging zu handhaben und in Ihrer Anwendung würden Sie einen Client mit einem der verfügbaren libraries implementieren.

1

Könnten Sie eine gemeinsame Nachricht ein wenig arbeiten Warteschlange haben Sie die Ajax-Abfragen können? Vielleicht ist es ein PHP-Skript, das die Mehrheit der Nachricht in memcached speichert (und möglicherweise in db im Falle eines Fehlers schreiben).

nicht sicher, aber neugierig zu anderen Lösungen zu hören ...

2

Sie suchen nach einem „Komet“ Server. Da Sie PHP sprechen sind, Ihre würde beste Lösung eine SaaS-Lösung sein, wie WebSync On-Demand, da PHP Probleme mit Skalierung, wenn es um eine große Anzahl von gleichzeitigen Verbindungen kommt offen gehalten werden. Siehe auch this question.

0

Das grundlegende Problem ist, dass Sie einen Comet-Server implementieren müssen (dh Server Push implementieren). Die Standard-Web-Hosts und Apache erlauben Ihnen nicht leicht, dies leicht zu tun. Eine andere gehostete Lösung (abgesehen von Web Sync) ist Goldfish Server. Zurzeit frei.