• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[SCRIPTSUCHE] Ajax-Chat mit "gesehen"-Funktion

J

j-l-n

Guest
Aus Interesse: kennt jemand zufällig ein Demoskript/-tutorial zu einem Ajax-Chat, der anzeigt, wann ob der Chatpartner die Nachricht gelesen hat und wann er zuletzt online war?
Habe auch nach längerer Google-Suche nichts dazu gefunden - vielleicht suche ich aber auch unter den falschen Begriffen...
 
Die Anforderung ist doch einfach nur ein Datenbankfeld mit dem Timestamp, wann der User zuletzt gelesen hat. Was stellst du dir denn genau vor?
 
Hi Julian,

eigentlich brauchst keinen (weiteren) Timestamp (hast ja bereits einen für "abgeschickt"), sondern einfach nur ein Flag, ob der andere Benutzer wieder eine Rutsche Nachrichten abgeholt hat (= "hole Nachrichten mit Timestamp >= letztes Mal" (in Session oder DB für User mitmeißeln); alles was im JSON o. ä. zurückkehrt, bekommt in der DB die Flag für "gelesen"). Der Absender der Nachricht fragt hierbei immer auf seine Nachrichten ab - ist viel Traffic auf der Maschine, aber Du willst es wohl so. Demnach fragen beide Beteiligten immer auf "neue Nachrichten" sowie auf den Status "eigener, letzter Nachrichten".

Deinen Chat könntest Du aufwerten mit:
- Fensterschließen teilt anderem Gesprächspartner mit, dass der Teilnehmer die Unterhaltung verlassen hat (u. U. über eine ChatRoom-ID, die ein User bekommt, wenn er in einem Chat ist; bei mehreren Räumen equivalent)
- weitere Gesprächspartner nachträglich einfügen

Ich gehe davon aus, dass Du mit "Media", "Bilder", "Smilies" etc. bereits selbst dran gedacht hast.
 
eigentlich brauchst keinen (weiteren) Timestamp (hast ja bereits einen für "abgeschickt"), sondern einfach nur ein Flag, ob der andere Benutzer wieder eine Rutsche Nachrichten abgeholt hat (= "hole Nachrichten mit Timestamp >= letztes Mal"
Und dein "letztes Mal" meinte ich mit Timestamp. Mit jedem Poll des Clients würde ich genau für diesen Poll den Timestamp speichern. Und wenn er dann das nächste mal pollt wird geschaut, ob es Nachrichten von anderen nach diesem Timestamp gibt. Wenn ja ausgeben, wenn nein leeres Feld zurückgeben.

- Fensterschließen teilt anderem Gesprächspartner mit, dass der Teilnehmer die Unterhaltung verlassen hat
Das ergibt sich aber eigentlich von selbst. Sobald dessen Client nicht mehr pollt ist er nicht mehr da. Wird ja keine Websockets Lösung, wenn ich das richtig verstehe.

Nebenbei bemerkt: Im IE11 gibt es m.E. einen Bug in der Ajax Geschichte bei https Verbindungen, der mir nämlich genau bei einer solchen Chat Anwendung vor die Füße gefallen ist: http://forum.jswelt.de/ajax/58531-netzwerkfehler-0x2ef3-ajax-request.html
 
Zuletzt bearbeitet:
Danke für euere Hinweise, im Gruppenchat habe ich das jetzt schon erfolgreich umgesetzt.
Zum User-to-User-Chat: hier suche ich ausnahmsweise mal eine fertige Demo/Skriptbeispiel. Über Google finde ich aber nur AJAX/PHP Chaträume, einen solchen habe ich aber wie erwähnt bereits selbst programmiert. Was ich suche ist ein fertiger User-to-User-Chat. Klar kann ich den Gruppen hat umprogrammieren, aber dazu habe ich eigentlich weniger Lust, da das ganze nur ein kleiner "Test" werden soll...
 
Aber was ist denn bei User-to-User großartig anders, Julian? Ist das irgendwo fest defniert für eine bestimmte Struktur oder was ist das? Suchst du eine andere Technik? Z.B. Java oder Websockets oder worum geht es dabei was du suchst?
 
Nein nein, es soll schon bei PHP + JS (AJAX) bleiben. Bloß will ich das Ganze jetzt eigentlich nicht extra umprogrammieren, weil es wie gesagt nur was zum ausprobieren werden soll. Und vom Aufwand her bin ich mir jetzt nicht so sicher; ich würde auf den ersten Blick schon sagen, dass es einige Umstellungen erfordert...
 
Aloha!

Hmmmm ... mal durch-den-Rücken-über-die-Brust-ins-Auge gedacht: Du hast einen voll funktionalen Chatraum - korrekt? Wenn dort zwei User drin sind, hast Du prinzipiell die Ausgangssituation, nach der Du suchst. Nehmen wir also an, dass der "main chat" der Ursprung ist - quasi "Patient 0". Was hindert Deinen Gedankengang daran, die beiden User in einen "eigenen Raum" zu stecken? Aus "Patient 0" machen wir nun "Raum 0" (= Haupt-Chat). Wenn sich zwei User unterhalten, gibst Du ihnen eine andere "Raumnummer" - schon sind diese beiden allein und alle anderen bekommen weiterhin nur den Stoff aus "Raum 0". Dafür benötigst Du ...

... Raumnummern (da stehen einige zur Verfügung :D)
... bei Deiner Teilnehmer-Tabelle ein Feld mit der aktuellen Raumnummer (ich würde es auf einen Raum je Sitzung regeln), in welchem sich die Gesprächspartner befinden

Bei Verlassen des Raumes kriegt er die Null ins Tabellenfeld und ist damit autom. wieder im Haupt-Chat.

Beste Grüße
 
Zuletzt bearbeitet:
Wenn sich zwei User unterhalten, gibst Du ihnen eine andere "Raumnummer" - schon sind diese beiden allein und alle anderen bekommen weiterhin nur den Stoff aus "Raum 0".
Wäre eine Idee. Aber ob das dann parallel mit mehreren Unterhaltungen so richtig klappt...

Ansonsten: die ganzen Google-Treffer sind entweder
a) reine Chaträume
oder
b) Chaträume mit der Option, private Nachrichten zu senden -> immer mit etlichen in diesem Falle unnötigen überblähten Zusatzfunktionen

Egal, ich probier vielleicht doch mal selbst die Umsetzung, vielleicht ist das ja doch am einfachsten...
 
Verstehe es nach wie vor nicht. Du hast eine Funktion und willst davon separat einen Teil für was anderes benutzen? Ist es nicht viel weniger Arbeit, von was eigenem einen Teil abzutrennen als sich in was ganz neues einzufinden? Das verstehe ich daran nicht.
 
Zurück
Oben