Meine Flash-basierte Chat-Client ist nicht robust genug? Was andere Art und Weise ist es?

StackOverflow https://stackoverflow.com/questions/2373026

  •  24-09-2019
  •  | 
  •  

Frage

Ich habe einen Flash-basierten Chat-Client entwickelt, dass Displays Einträge von Nutzern zusammen mit ihren Benutzername und Zeit des Schreibens zu einer Gruppe gehört. Die Daten werden in einer MySQL-Datenbank mit der Gruppen-ID, User-ID und Nachricht gespeichert, so dass sie über Chat-Sitzungen bestehen bleibt und ermöglicht es Benutzern, in zu einem späteren Zeitpunkt die Protokollierung der Gespräche, um zu sehen, weniger von einem Chat, eher ein schwarzes Brett. Wenn ein Benutzer eine Nachricht schreibt mag ich die Chat-Clients zu aktualisieren sofort erscheint eine Echtzeit-Chat sein. Meine Lösung war bisher ein Intervall in meinem Flash-Code enthalten, die eine PHP-Seite aufruft, die die Datenbank für neue Kommentare abfragt und gibt diese zu Flash.

Ich denke, von dem, was Ive lesen, dass dieser Ansatz lange Polling genannt wird? ist das richtig? Ist das robust genug für die Lautstärke? Würde ich besser schauen, um die Daten an den Client zu drücken, wenn es Änderungen? Wie erkenne ich diese Änderungen? Ich habe bei APE zum Beispiel gesucht, aber ich denke nicht, dass dies speichert die Nachrichten in einer Datenbank.

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Das Schlimme an Polling ist es ziemlich schnell teuer werden kann.

Nehmen wir an, Sie haben 10000 Benutzer online, die der Chat wollen eine Verzögerung haben, nicht größer als 1 Sekunde. Dann wird Youn Ihren Server mit 10000 Anfragen pro Sekunde bombardieren.

für kleinere Dinge oder Dinge, die Notwendigkeit nicht auf dem neuesten Stand zu sein, bis, Polling ist ein guter Ansatz, da seine einfachen und kann wirklich nichts falsch machen.

, wenn dies mit nur einer kleinen Gemeinde ist bis zu 100 Personen in den Chat verwenden, dann sollte dies das Problem nicht sein.

davon abgesehen, könnten Sie APE oder Smartfox verwenden oder Red5 oder eine Menge verschiedenen Dinge einen persistenten Relay-Server zu erstellen, dh einen Server, die permanenten Verbindungen zu allen Kunden und meldet sie über alle Änderungen (zB neue Nachrichten) hat .

wie immer, meine persönliche Beratung ist Haxe . Sie können die Chat Tutorial verwenden, um loszulegen. Haxe hat eine ziemlich steile Lernkurve, aber ich denke, es ist es auf jeden Fall wert ist. Ich bin glücklich hinter sowohl Actionscript und PHP zu verlassen haben.

Bearbeiten , was Sie beschreiben, ist nicht lange Polling . Sie können aber auch kaum lange Polling mit PHP tun, zumindest wenn classicaly mit Apache verwendet. Apache wird eine bestimmte Anzahl von PHP-Prozessen erstellen. Jedes Mal, wenn eine Anfrage kommt, wird es aussehen für einen kostenlosen PHP-Prozess und lassen Sie es die Anforderung verarbeiten. Wenn der PHP-Prozess abgeschlossen ist, sendet er die Antwort zurück an den Client. Wenn es keine freien Prozesse zur Verfügung stehen, wird die Anfrage puffern, bis ein Prozess zur Verfügung steht. So könnten Sie völlig Ihren gesamten Server sperren, wenn Sie die klassische Art und Weise lange Polling mit PHP versucht zu tun.

Andere Tipps

Wenn Sie wollten die Anwendung benachrichtigen, wenn eine neue Nachricht empfangen wurde dann würden Sie irgendeine Form der Anwendung auf dem Server implementieren müssen, um die Datenbank zu überwachen / in sie alarmiert von Änderungen werden und dann Updates umkippen für die Kunden.

Dies sollte effizienter als nur Abfrage sein, denn wenn man Sie von einem niedrigen Verkehrsszenario denken, mit Polling Sie unabhängig von dem Server die Hölle klopfen werde - auf diese Weise sind Sie nur den Verkehr zu erzeugen, wenn es eine ist Grund ...

Wenn Sie in einem Kommentar eingeben, könnte Ihr Client diese Anwendung informiert direkt (über einen Web-Service) der Änderung, und dieser Helfer App könnte dann die Datenbank aktualisieren ...

Es sollte gesagt werden, obwohl ich kein Experte auf Chat-Programme bin - nie in einem persönlich ...

beteiligt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top