myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   HTML auto reload (https://mygully.com/showthread.php?t=2335878)

slahn 12.06.11 12:43

HTML auto reload
 
Hallo,

gibt es eine bessere lösung für einen auto reload als:
Code:

meta http-equiv="refresh" content="5"
<> Hab ich raus nehmen müssen da er es sonst nicht anzeigt, Glaubt dann wohl dass es sich um HTML-Code handelt :rolleyes:.

Genaueres:


Ich sag schon mal Danke, falls jemand eine Idee hat :D.

urga 12.06.11 15:21

ich würde da per javas***** mit window.setTimeout() und jquery.ajax() neue nachrichten laden.
dazu muss dein server allerdings sowas wie eine sessionverwaltung bieten, damit er neue nachrichten seinen clients zuordnen kann.

slahn 12.06.11 16:29

Schon mal ein großes danke.

Ich wäre noch dankbarer wenn du mir einen kurzen Abriss über die Funktionen von jquery.ajax() geben könntest. So weit ich das bis jetzt verstanden habe, kann man damit Teilinhalte vom Server laden? Ich müsste mir also irgendwie merken was ich dem Client schon mal gesendet habe, um jquery.ajax() verwenden zu können?

Wo ist der unterschied/vorteil zu meiner Idee mit dem Meta Eintrag und zu window.setTimeout() ?

Im HTTP-Header wird ja die Größe des HTML-Codes mitgegeben. Kann man durch irgend einen Eintrag in der Webseite irgendwie einen HTTP HEAD request absetzen, um zu Prüfen dass sich die Seite geändert hat (also eine anderer Content-Length) ?

urga 12.06.11 20:57

Zitat:

Zitat von slahn (Beitrag 22382543)
Schon mal ein großes danke.

Ich wäre noch dankbarer wenn du mir einen kurzen Abriss über die Funktionen von jquery.ajax() geben könntest. So weit ich das bis jetzt verstanden habe, kann man damit Teilinhalte vom Server laden?

genau. in jquery musst du dich aber schon selbst einarbeiten, ist nicht so schwer, wenn man das grundkonzept einmal verstanden hat.
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]
get() bekommt eine url und eine callback-funktion. diese funktion nimmt den http-output deines servers zur url und hängt den output an ein div.

Zitat:

Ich müsste mir also irgendwie merken was ich dem Client schon mal gesendet habe, um jquery.ajax() verwenden zu können?
genau.

Zitat:

Wo ist der unterschied/vorteil zu meiner Idee mit dem Meta Eintrag und zu window.setTimeout() ?
der hauptvorteil ist, daß nicht die komplette html-seite gesendet wird, sondern nur die neuen beiträge seit dem letztem aufruf.

Zitat:

Im HTTP-Header wird ja die Größe des HTML-Codes mitgegeben. Kann man durch irgend einen Eintrag in der Webseite irgendwie einen HTTP HEAD request absetzen, um zu Prüfen dass sich die Seite geändert hat (also eine anderer Content-Length) ?
ebenfalls per ajax. aber dann würde wieder die komplette seite gesendet werden...

slahn 12.06.11 21:49

Also noch mal danke.

Werde mir somit ajax genauer ansehen (müssen), sobald mehr Zeit ist. Und es war mir schon klar dass du mich hier nicht schritt für schritt in ajax einweisen wirst ;)
Ich wollte eben nur sicher gehen ob es dass ist was ich denke und dank dir weiß ich jetzt dass ich richtig gelegen habe.

urga 12.06.11 22:07

ich habe es aus spaß mal umgesetzt: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

das php-s***** ist denkbar trivial quick und very dirty:
Code:

<?php
session_start();
if ($_POST['user'] && $_POST['msg']) {
        $_SESSION['message'] = array ('u' => $_POST['user'], 'm' => $_POST['msg']);
        exit (0);
}

if ($x = $_SESSION['message']) {
        $u = '<font color=red>' . $x['u'] . '</font>';
        $res = array ('newmsg' => $u . ' : ' . $x['m'] . '<br>');
        unset ($_SESSION['message']);
}
elseif (rand(0, 10) > 5) {
        $res = array ('newmsg' => date('c') . ": blablabla<br>");
}
else {
        $res = array('nix');
}
echo json_encode ($res);

// fur nen fehler:
// echo json_encode (array ('error' => 'blablabla'));

?>


slahn 12.06.11 22:09

Danke, somit kann ich auch gleich damit und einem "echten" Webserver (zb. Apache) und dem guten alten Freund Wireshark, schauen was ich da so alles umsetzen muss, in Richtung HTTP.

Erspart mir noch mehr Arbeit :D

urga 12.06.11 22:21

mit einem erfahrenem coder und einer kleiner mysql-db sollte so ein chat in ein paar stunden erledigt sein.

slahn 12.06.11 22:51

Ich will ja das ganze nicht auf HTML, mysql, PHP, .... Basis haben.
Ich will dass man ein ausführbares Programm hat, was genau die Funktionalität bietet. Damit man es ganz leicht überall mit hin nehmen kann. Also einen eigenen Online-Chat, der aber Portabel ist.

Und der Grund warum ich es auf HTML aufbaue ist der, da dann die Clients keine zusatz Programme brauchen. Weil einen Browser hat jeder.

Mein Problem ist halt nur dass meine Kenntnisse über HTML sehr beschränkt sind und somit auch die Seite dementsprechend aussieht ;)

urga 12.06.11 23:37

was denn nu?
* somit kann ich auch gleich damit und einem "echten" Webserver (zb. Apache)
* Ich will ja das ganze nicht auf HTML
* Und der Grund warum ich es auf HTML aufbaue
?
;)

slahn 12.06.11 23:41

Sorry,
Punkt 1: Zum testen will ich es auf Apache laufen lassen, da ich ja da weiß dass alles geht und unterstützt wird was HTML und HTTP kann, bei meinem Server ist es Fragwürdig. Mit Wireshark schaue ich dann wie der Browser mit dem Apache Server spricht, um es dann nach zu bauen.

Punkt 2: Ich war wohl zu vorschnell, ich meine dass ich eben nicht einen vollwertigen Webserver laufen lassen will, da dieser eine Installation, Konfiguration und die HTML/PHP-Dokumente benötig (viel zu viel Aufwand für eine schnelle Portable Lösung.

Punkt 3: Ich verwende dann aber eben schon HTML (aber fix in Maschinencode gemeißelt) damit das Client-Programm entfällt, bzw. diese Aufgabe der Browser übernimmt.

Ich hoffe das ist jetzt Verständlicher :)
man sollte immer erst denken, dann schreiben ;)

urga 13.06.11 00:04

axo ;)

na dann wünsche ich dir viel erfolg bei deinem projekt.
evntl ist [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] noch ganz nützlich.

slahn 13.06.11 00:12

Daran hab ich ja noch gar nicht gedacht.

Danke sehr :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.