PHP Chat
Heute ist Samstag
- programmiertechnik
0 jobo0 noi0 Jeena Paradies
Guten Abend,
ich hab mir gerade aus Spaß ein PHP Chat gebastelt und finde ihn jetzt so toll das ich ihn wenn er fertig ist auf meine Webseite stellen will. Nach vielem rumgeteste ist mir jedoch ein gravierendes Problem aufgefallen:
nachdem das Formular (mit dem Chattext) abgeschickt wurde wird bei mir die Seite sofort aktualisiert, wenn ich mir jedoch den Chat auf einem anderen Tab ansehe wird dort nicht der neue Text angezeigt.
Ein meta refresh das nach einer bestimmten Zeit die Seite neu lädt möchte ich nicht einbauen, vorallem da der Chattext den man in das Eingabefeld eingibt nach einem Reload "gelöscht" wird.
Was gibt es für möglichkeiten das der Chat in Echtzeit läuft, sprich dass bei einem Chatteilnehmer die Seite sofort aktualisiert wird nachdem etwas neues geschrieben wurde?
Ich dachte das könnte vielleicht irgendwie mit Javascript oder Ajax funktionieren, nur bin ich da ein "noob" und weiss nicht wie ich das angehen sollte.
Freu mich über hilfreiche Antworten :-)
Mfg,
Heute ist Samstag.
Hallo,
vom Prinzip her: mit Javascript den Server fragen, ob was neues passiert ist. S.u.a. setTimeout().
Gruß
jobo
vom Prinzip her: mit Javascript den Server fragen, ob was neues passiert ist. S.u.a. setTimeout().
Guten Abend,
Sie meinen also ich sollte den ganzen Chat in eine Schleife stecken?
Mfg,
Heute ist Samstag.
Hallo,
Sie meinen also ich sollte den ganzen Chat in eine Schleife stecken?
Naja, der Chat besteht aus zwei Teilen:
Das PHP-Skript auf dem Server verwaltet die Einträge. Das HTML-Dokument beim Nutzer muss alle soundsoviel Sekunden den Server fragen, ob es neue Einträge gibt.
Gruß
jobo
Das PHP-Skript auf dem Server verwaltet die Einträge. Das HTML-Dokument beim Nutzer muss alle soundsoviel Sekunden den Server fragen, ob es neue Einträge gibt.
Und falls es neue Einträge gibt wird die Seite neu geladen?
Entschuldige, ich versteh gerade nicht was Sie meinen.
Mfg,
Heute ist Samstag.
Hi!
» Das PHP-Skript auf dem Server verwaltet die Einträge. Das HTML-Dokument beim Nutzer muss alle soundsoviel Sekunden den Server fragen, ob es neue Einträge gibt.
Und falls es neue Einträge gibt wird die Seite neu geladen?
Nein, es werden eventuell neu vorhandene Einträge per Javascript vom Server abgerufen und in das aktuelle Dokument (vulgo: Seite) eingebunden.
Entschuldige, ich versteh gerade nicht was Sie meinen.
Entschuldigen Sie bitte, ich meine, dass wir uns hier duzen!
off:PP
Nein, es werden eventuell neu vorhandene Einträge per Javascript vom Server abgerufen und in das aktuelle Dokument (vulgo: Seite) eingebunden.
Guten Abend,
das ich das richtig verstehe: mein Chatoutput befindet sich in einem Div. Jetzt soll ich mit Javascript überprüfen ob es neue Einträge gab (Datei auslesen?) und die Einträge mittels inner.HTML einbinden?
Falls ich richtig liegen sollte verstehe ich nicht wie ich überprüfen soll ob es neue Einträge gab.
Mfg,
Heute ist Samstag.
Bonsoir!
» Nein, es werden eventuell neu vorhandene Einträge per Javascript vom Server abgerufen und in das aktuelle Dokument (vulgo: Seite) eingebunden.
das ich das richtig verstehe: mein Chatoutput befindet sich in einem Div. Jetzt soll ich mit Javascript überprüfen ob es neue Einträge gab (Datei auslesen?)
Nicht eine Datei, Du kannst periodisch per Javascript asynchron eine HTTP-Ressource abrufen - aka: AJAX.
und die Einträge mittels inner.HTML einbinden?
Per geeigneter DOM-Funktion ins Dokument einbetten.
Falls ich richtig liegen sollte verstehe ich nicht wie ich überprüfen soll ob es neue Einträge gab.
Das weiß der Server, da wir aber weder client- noch serverseitigen Code kennen befinden wir uns gerade auf der 'grünen Wiese' und betrachten das ganze 'theoretisch grau'.
BTW: heißt Du in knapp 2 Stunden 'heute ist Sonntag' - ich frage nur deshalb, weil das Problem viel eher nicht eine Lösung erfahren haben wird;)
off:PP
Hallo,
Falls ich richtig liegen sollte verstehe ich nicht wie ich überprüfen soll ob es neue Einträge gab.
Naja, ganz simepel: du rufst per Javascript alle 1 die url auf, zB. mit location.href = "eintraege.php?time=[unixtime]" (die zeit änderen, damit die Datei nicht aus dem Cache geladen wird).
Oder per AJAX (XmlHttpRequest) oder indem du das src-Attribute eines script-Elementes zB. mit o.g. Url belegst und vom Server dann vielleicht schon Javascriptcode zurückgibst. ZB: my_innerHTML = "neuer text bla bla"; dann könntest du das innerHTML des Divs austauschen.
Gruß
jobo
Ich dachte das könnte vielleicht irgendwie mit Javascript oder Ajax funktionieren, nur bin ich da ein "noob" und weiss nicht wie ich das angehen sollte.
http://lmgtfy.com/?q=AJAX+Tutorial
http://lmgtfy.com/?q=AJAX+Tutorial
Guten Abend,
Meine vermutung dass man mein Problem eventuell mit Javascript oder Ajax lösen kann war eher als Frage gedacht, ob es geht.
Ich habe mich schon einmal mit Ajax beschäftigt, requests usw. kann ich senden, nur weiss ich nicht wie mir das bei meinem Problem helfen sollte.
Mfg,
Heute ist Samstag.
Hallo,
Realtime Server Sent Events in Opera, beachte auch bitte die Hinweise in den Kommentaren.
Jeena