Guten Abend!
Ich habe heute mal versucht, mich mit der Erstellung eines Html-Chats in Cgi einzuarbeiten. Momentan werden die nötigen Daten über ein Formular beim Drücken des Senden-Buttons an mein Cgi-Script übergeben, das den neuen Text inklusive Benutzername an eine Textdatei anhängt, die Chatlog genannt ist. Das Cgi-Script gibt zudem letztendlich wieder über print die aktualisierte Seite aus.
Doch nun zu meinem Problem: Da die Seite nur beim Absenden des Textes aktualisiert wird, bekommt man nicht mit, falls ein anderer Chat-User eine neue Nachricht gesendet hat, bis man dies ebenfalls tut. Nun habe ich versucht, mit einem kleinen Javascript das Cgi-Script in kurzen Intervallen aufrufen zu lassen, damit der Chatverlauf stets aktuell ist. Doch das ständige erneute Laden der Seite sieht nicht besonders schön aus. Mein Problem ist, dass ich mit Javascript nicht die Chatlog.txt einlesen kann und somit stets das Cgi-Script betätigen muss, welches wiederum nichts in der Seite ändern kann, sondern stets die ganze Seite neu laden muss.
Gibt es eine Möglichkeit, ein Cgi-Script abzubrechen, sodass jedoch nicht eine leere Seite im Browser angezeigt wird, sondern dieser auf der alten Seite bleibt, sofern dem Cgi-Script keine neuen Daten übergeben wurden? Ich weiß durchaus, dass sich für eine solche Aufgabe vielmehr pures Javascript eignen würde, doch ich will versuchen, möglichst viel für Testzwecke in Python zu machen.
Ich bedanke mich einstweilen für euer Interesse und verbleibe mit dankenden Grüßen,
Pythonierer!
Html-Chat mit Python und Cgi
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Kann es sein, dass du AJAX suchst? Naja, außerdem kanns tdu die Chatlog-Datei durchaus mit JS einlesen, aber besonders schnell wird das bei langen Logs nicht sein, wenn der Log jedes mal wieder eingelesen werden muss.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Hm, das dürfte sich mit Content-Range lösen lassenLeonidas hat geschrieben:Kann es sein, dass du AJAX suchst? Naja, außerdem kanns tdu die Chatlog-Datei durchaus mit JS einlesen, aber besonders schnell wird das bei langen Logs nicht sein, wenn der Log jedes mal wieder eingelesen werden muss.
Ich würde jedoch die neuen Nachrichten jeweils als JSON vom Server holen. Und auf dem Server jeweils noch ein while no_new_message: sleep() einbauen
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
HTML (egal mit welchen Kniffen) ist eben für solche Echtzeitkommunikation nicht ausgelegt und man handelt sich viele Probleme ein. Das Web 2.0 hat eben auch seine Grenzen.
Wozu also einen Chat über eine Webseite? Ich nutze da viel lieber Stand-alone-Programme. Ok, weniger plattformübergreifend ... aber sonst?
Wozu also einen Chat über eine Webseite? Ich nutze da viel lieber Stand-alone-Programme. Ok, weniger plattformübergreifend ... aber sonst?
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich denke einen IRC-Client findest du auf mehr Platformen als Platformen mit Browser (ahem, brauchbaren Browser).Hyperion hat geschrieben:Ok, weniger plattformübergreifend ... aber sonst?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
HTTP ist hier eher das Problem, nicht HTML.Hyperion hat geschrieben:HTML (egal mit welchen Kniffen) ist eben für solche Echtzeitkommunikation nicht ausgelegt und man handelt sich viele Probleme ein. Das Web 2.0 hat eben auch seine Grenzen.
Ganz einfach: Jeder hat heutzutage einen Webbrowser auf dem internetfähigen Rechner. Und man chattet gewöhnlich auch nur im Internet. Ergo haben schon 100% der Anwender im Prinzip die richtige Anwendung. Download und Installation von zusätzlicher Software ist nicht erforderlich - von Problemen wie Mistrauen, Trojaner-Alarm vom Virenscanner, notwendigen Administratorrechten, dem zur Installation erforderlichen Wissen uvm. ganz abgesehen. Da hättest du doch von selbst drauf kommen müssenHyperion hat geschrieben:Wozu also einen Chat über eine Webseite? Ich nutze da viel lieber Stand-alone-Programme. Ok, weniger plattformübergreifend ... aber sonst?
P.S.: Das ganze unter der Voraussetzung, dass man Anwendern leichten Zugang zu einem Chatsystem geben möchte. IRC sollte man praktischerweise nicht neu erfinden.
-
- User
- Beiträge: 41
- Registriert: Samstag 13. Januar 2007, 15:26
Hallo,
erstmal will ich euch für die vielen Antworten und damit eröffneten Möglichkeiten danken sowie mich für meine lange Zeit ausbleibende Antwort entschuldigen, doch ich hatte ein wenig Stress in der Schule.
Als erstes würde mich interessieren, wie ich rein theoretisch mit Javascript eine Textdatei auslesen könnte, da ich zu diesem Thema über Google stets nur die Antwort erhielt, dass dies bloß über Java, nicht jedoch Javascript, möglich sei.
Des weiteren muss ich sagen, dass gerade Ajax mein Interesse auf sich gezogen hat, doch auch der Vorschlag mit Json klingt vielversprechend.
Zu den Diskussionen um den Sinn eines Chats im Browser wollte ich noch sagen, dass dies wie gesagt vor allem dem Einstudieren von Cgi dienen sollte und höchstens für einen kleinen Hilfschat bzw. ein Guestbook (bei welchem ich jedoch den Aktualisierungsfaktor vernachlässigen kann) gedacht war.
Wie dem auch sei, ich freue mich jedenfalls auf eine Antwort nach dem Einlesen von Textdateien mit Javascript und verbleibe mit freundlichen Grüßen,
Pythonierer!
erstmal will ich euch für die vielen Antworten und damit eröffneten Möglichkeiten danken sowie mich für meine lange Zeit ausbleibende Antwort entschuldigen, doch ich hatte ein wenig Stress in der Schule.
Als erstes würde mich interessieren, wie ich rein theoretisch mit Javascript eine Textdatei auslesen könnte, da ich zu diesem Thema über Google stets nur die Antwort erhielt, dass dies bloß über Java, nicht jedoch Javascript, möglich sei.
Des weiteren muss ich sagen, dass gerade Ajax mein Interesse auf sich gezogen hat, doch auch der Vorschlag mit Json klingt vielversprechend.
Zu den Diskussionen um den Sinn eines Chats im Browser wollte ich noch sagen, dass dies wie gesagt vor allem dem Einstudieren von Cgi dienen sollte und höchstens für einen kleinen Hilfschat bzw. ein Guestbook (bei welchem ich jedoch den Aktualisierungsfaktor vernachlässigen kann) gedacht war.
Wie dem auch sei, ich freue mich jedenfalls auf eine Antwort nach dem Einlesen von Textdateien mit Javascript und verbleibe mit freundlichen Grüßen,
Pythonierer!
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Hm ... ok, sagen wir beides Klar macht es ein zustandsloses Protokoll nicht gerade leichter, aber HTML an sich ist eben auch nicht ideal, da die "GUI" bei jeder Änderung neu interpretiert werden muss.Y0Gi hat geschrieben:HTTP ist hier eher das Problem, nicht HTML.Hyperion hat geschrieben:HTML (egal mit welchen Kniffen) ist eben für solche Echtzeitkommunikation nicht ausgelegt und man handelt sich viele Probleme ein. Das Web 2.0 hat eben auch seine Grenzen.
Sicher - wobei das Internet ja nichts mit HTML zu tun hat Auch IRC hat ja sein Hauptanwendungsgebiet im Internet! Insofern wäre da wohl ein IRC-Client auf Java-Basis die erste Wahl. (Und davon gibts sicher schon genug!)Ganz einfach: Jeder hat heutzutage einen Webbrowser auf dem internetfähigen Rechner. Und man chattet gewöhnlich auch nur im Internet. Ergo haben schon 100% der Anwender im Prinzip die richtige Anwendung. Download und Installation von zusätzlicher Software ist nicht erforderlich - von Problemen wie Mistrauen, Trojaner-Alarm vom Virenscanner, notwendigen Administratorrechten, dem zur Installation erforderlichen Wissen uvm. ganz abgesehen. Da hättest du doch von selbst drauf kommen müssenHyperion hat geschrieben:Wozu also einen Chat über eine Webseite? Ich nutze da viel lieber Stand-alone-Programme. Ok, weniger plattformübergreifend ... aber sonst?
Naja, da es sich eh um eine akademische Aufgabe handelt, ist diese Diskussion wohl eh müßig
Wie gesagt, vom Anwenderkomfort - und die will man, gerade wenn es Kunden sind und es um Geld geht, keinesfalls verschrecken oder ausschließen - ist ein webbasierter Chat gegenüber separater Software unschlagbar.
Da HTML einen live manipulierbaren DOM-Baum hat, sehe ich da (sofern JavaScript benutzt wird) kein großes Problem darin, HTML für die Oberfläche zu verwenden.
Da HTML einen live manipulierbaren DOM-Baum hat, sehe ich da (sofern JavaScript benutzt wird) kein großes Problem darin, HTML für die Oberfläche zu verwenden.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Kommt drauf an, wie man "Komfort" definiert! Ich liebe native GUIs und mag HTML-Forms nun mal nicht. Diese bieten für mich kein gutes Look-and-feel. Also wäre es für mich unkomfortabel. Wenn man es vom Standpunkt der Installation her sieht, hast Du sicherlich recht!Y0Gi hat geschrieben:Wie gesagt, vom Anwenderkomfort - und die will man, gerade wenn es Kunden sind und es um Geld geht, keinesfalls verschrecken oder ausschließen - ist ein webbasierter Chat gegenüber separater Software unschlagbar.
Sicher. Aber bei größeren Seiten dauert das Rendering nun mal ... bei einem separaten Chat-Fenster, ist das sicher ein geringeres Problem!Da HTML einen live manipulierbaren DOM-Baum hat, sehe ich da (sofern JavaScript benutzt wird) kein großes Problem darin, HTML für die Oberfläche zu verwenden.
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Ja, da gibt es dann aber auch wieder Hacks mit innerHTML mit denen alles relativ schnell geht Aber ich glaube es wird langsam Offtopic.Hyperion hat geschrieben:Sicher. Aber bei größeren Seiten dauert das Rendering nun mal ... bei einem separaten Chat-Fenster, ist das sicher ein geringeres Problem!
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
-
- User
- Beiträge: 41
- Registriert: Samstag 13. Januar 2007, 15:26
Entschuldigt mich, wenn ich eure hitzige Diskussion über den (Un-)Sinn eines Browser-Chats unterbreche, aber ich hätte doch noch gerne gewusst, wie ich denn jetzt eine Textdatei mit Javascript einlesen und diese dann in einem Text in Html ausgeben kann?
Da dies wahrscheinlich die letzte Antwort sein wird, bedanke ich mich schon mal im Voraus, dann muss ich dies nicht noch einmal in einem ansonsten inhaltslosen Post machen.
Da dies wahrscheinlich die letzte Antwort sein wird, bedanke ich mich schon mal im Voraus, dann muss ich dies nicht noch einmal in einem ansonsten inhaltslosen Post machen.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Pythonierer!Pythonierer hat geschrieben:Da dies wahrscheinlich die letzte Antwort sein wird, bedanke ich mich schon mal im Voraus, dann muss ich dies nicht noch einmal in einem ansonsten inhaltslosen Post machen.
Heißt das jetzt, dass du nicht antworten wirst? Also ich freue mich immer wenn sich jemand nach einer Antwort bedankt.
Also, du nimmst jQuery http://jquery.com/ und liest dich in die Tutorials ein. Dann suchst du dort nach der Kategorie "Ajax" http://docs.jquery.com/Category:Ajax und liest dich dort auch noch ein wenig durch. Sehr interessant ist noch dieser Artikel: http://www-128.ibm.com/developerworks/l ... query.html
Die jQuery-Ajax-Api ist hier dokumentiert: http://docs.jquery.com/Ajax
Die Serverseite muss einfach nur XML, HTML, JSON oder TEXT zurück liefern. HTML oder TEXT kann man z.B. direkt an ein DOM-Objekt zum Anzeigen übergeben.
Die Serverseite kann z.B. ein Python XMLRPC-Server http://www.python-forum.de/topic-5478.html sein. Oder wenn du CherryPy http://www.cherrypy.org/ für deine Website (statt CGI) http://halvar.at/python/cherrypy_cheetah/ verwendest, dann könntest du auch aus CherryPy heraus XMLRPC Anfragen beantworten. http://www.python-forum.de/post-70912.html#70912 (siehe zweites Beispielskript)
Wenn dir der Leidensdruck mit CGI noch nicht zu groß ist, dann kannst du XMLRPC auch aus CGI heraus verwenden. Das funktioniert mit dem xmlrpclib-Modul. Die Methode ``dumps`` http://docs.python.org/lib/node658.html kann zum Antworten auf eine XMLRPC-Frage herangezogen werden.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- User
- Beiträge: 41
- Registriert: Samstag 13. Januar 2007, 15:26
Guten Tag!
Ich will mich ja gleich mal ganz brav entschuldigen, dass ich mein Dankeschön bereits im Voraus gab, ich dachte nur, ihr würdet Posts, die keinen "wirklichen" Inhalt haben, nicht so gerne sehen.
Dies war jedoch keinesfalls böse oder undankbar gemeint, ich bin ehrlich gesagt froh, dass ihr meinen Dank gerne annehmt.
Also vielen, vielen Dank für die zahlreichen Posts!
Ich werde mich bestimmt noch ein nächster Zeit mit jQuery, Ajax und/oder CherryPy beschäftigen, jedoch fehlt mir derzeit dazu die Zeit. Daher wollte ich eigentlich nur wissen, wie man nun mit Javascript ganz simpel eine Textdatei ausliest. Falls dies ohne Ajax, jQuery, CherryPy o.a. nicht geht, so ist es auch nicht so schlimm, da der Chat ja wie gesagt nur als Cgi-Intro dienen sollte.
Also nochmals vielen Dank und noch einen schönen Tag,
Pythonierer!
Ich will mich ja gleich mal ganz brav entschuldigen, dass ich mein Dankeschön bereits im Voraus gab, ich dachte nur, ihr würdet Posts, die keinen "wirklichen" Inhalt haben, nicht so gerne sehen.
Dies war jedoch keinesfalls böse oder undankbar gemeint, ich bin ehrlich gesagt froh, dass ihr meinen Dank gerne annehmt.
Also vielen, vielen Dank für die zahlreichen Posts!
Ich werde mich bestimmt noch ein nächster Zeit mit jQuery, Ajax und/oder CherryPy beschäftigen, jedoch fehlt mir derzeit dazu die Zeit. Daher wollte ich eigentlich nur wissen, wie man nun mit Javascript ganz simpel eine Textdatei ausliest. Falls dies ohne Ajax, jQuery, CherryPy o.a. nicht geht, so ist es auch nicht so schlimm, da der Chat ja wie gesagt nur als Cgi-Intro dienen sollte.
Also nochmals vielen Dank und noch einen schönen Tag,
Pythonierer!