Hallo,
mit einem raspi /Apache stelle ich eine Webseite zur Verfügung.
Selten ändert sich das was.
Alle paar Stunden ein paar Ascii Zeichen.
Wie kann ich serverseitig realisieren, dass sich die Webansicht der
Clients (Webbrowser, alles was es so gibt) dann auch refreshed?
Den Server neustarten bringt nichts.
Clientseitig habe ich keinen Einfluss.
Es geht dabei um eine kleine Informationstafel mit einfacher
Darstellung.
Danke
Am einfachsten ließe sich das via JS erledigen. Das ist zwar entgegen
der Anforderung clientseitig, aber von der Serverseite aus hast du
ansonsten keinen Einfluss auf den Client.
Nachtrag: es gäbe auch noch <meta http-equiv="refresh" content="[Zeit in
s]">
Der Server kann den Client nicht von sich aus kontaktieren.
Du kannst wie hier: https://stackoverflow.com/a/10944561 mit einer Zeile
JS periodisch die Seite neuladen.
Oder eine Websocket-Verbindung offen lassen, um dem Client Bescheid zu
geben, dass sich was geändert hat. Hätte den Vorteil, dass du auch nur
die paar veränderten Byte aktualisieren kannst. Aber den Nachteil, dass
die ganze Zeit eine Verbindung besteht.
Dirk B. schrieb:> Wie schnell soll denn die Änderung angezeigt werden?
Nicht zeitkritisch, in ein paar Minuten.
Problem ist auch das es eine Hilfskraft über MS Publisher .o.ä.
erledigen soll. Die überschreiben dann den HTML /JS Code ;-(.
Wenn es da ein Stück Software für ein paar € gibt, wäre das auch ok.
Das ist ja nun keine Nische, aktualisierende Webseiten durch Laien
auffrischen zu lassen.
Wenn dafür extra ein CMS wie Joomla et erforderlich ist, wäre es auch
ok.
Oder eine MS Sharepoint Seite??
Kann man bei der Software nicht einstellen, dass sie ein Template nehmen
soll? Dann kannst du den HTML Tag dort unterbringen.
Im Notfall kannst du die generierte Seite auch nicht direkt anzeigen,
sondern in eine andere Seite einbetten, die dann die Reload-Logik
enthält.
HTML Fragender schrieb:> Jemand schrieb:>> Kann man bei der Software nicht einstellen, dass sie ein Template nehmen>> Es gibt keine "Software"
Ich meinte den von dir angesprochenen MS Publisher oder Alternativen,
war zugegebenermaßen etwas missverständlich.
Wie wäre es mit einer Seite (1), die nur einen div-Container mit einer
Seite (2) enthält, der dann per Javascript periodisch neu geladen wird?
Als (2) wird die Publisher-Seite, die an einem festen Ort liegen muss,
geladen.
Die Seite (1) darf eben nicht angefasst werden, kann auf dem Webserver
im root liegen.
Das ganze dann mit einer bebilderten Anleitung und notfalls einem
Skript, dass die Seite (1) wieder durch Default ersetzt.
mfg mf
Achim M. schrieb:> Wie wäre es mit einer Seite (1), die nur einen div-Container mit einer> Seite (2) enthält, der dann per Javascript periodisch neu geladen wird?>> Als (2) wird die Publisher-Seite, die an einem festen Ort liegen muss,> geladen.
Das hört sich nach einem guten Plan an.
Ich verstehe es aber nicht.
Kannst Du ein Beispiel erstellen?
Damit das Konzept klarer wird.
Vielen Dank für die Beiträge.
Es gibt also einen oder mehrere Raspis mit Monitoren ( oder Mini PC mit
Windoofs/ egal) wo ein Browser mit dem Betriebssystem automatisch
gestartet wird und fest auf eine URL verweist.
Jack V. schrieb:> Am einfachsten ließe sich das via JS erledigen. Das ist zwar entgegen> der Anforderung clientseitig, aber von der Serverseite aus hast du> ansonsten keinen Einfluss auf den Client
Das ist streng genommen korrekt, aber “erlaubt”.
Ich möchte nur von einer zentralen Stelle einen Refresh der geänderten
Webseite erreichen.
Ich denke die Puzzelstücke reichen, aber wie nun alles zusammenfügen?
Die Veränderung der einfachen Webseite ( nur eine ) erfolgt durch einen
Laien. Er ändert nur den Inhalt der Seite mit einem geeigneten Programm,
das könnte jede geeignete Office Anwendung sein, wer einen besseren
Weg/Editor kennt, möge das bitte sagen.
Die “ Mimik “ des refreshes muss also vom reinen Content entkoppelt
sein, sonst wird der Laie das Konstrukt wohl schnell zerstören.
Wenn die Refresh “ Mimik “ einfach auf den Content verwaist, der ggf. an
einer anderen Stelle steht und dort nur Fileberechtigungen zum Ändern
existieren, wäre das Ziel m.E. erreicht.
Kann das jemand bitte nochmal kurz skizzieren, oder konkretisieren?
Vielen lieben Dank.
HTML Fragender schrieb:> Ich möchte nur von einer zentralen Stelle einen Refresh der geänderten> Webseite erreichen.
Um es nochmal auf den Punkt zu bringen: Das geht nicht. Beim HTTP
Protokoll gibt es keine Möglichkeit, wo der Server dem Browser irgend
etwas aktiv senden kann.
Der Browser muss sich die Updates holen. Damit der Bildschirm nicht
unnötig oft flackert, kann man ein AJAX Script (siehe Wikipedia)
verwenden, was den Server in regelmäßigen Intervallen fragt "Hast du was
neues für mich?". Und wenn ja, dann kann es dieses Update holen oder die
ganze Seite neu laden.
Wenn es um kurze Intervalle (<1min) geht, kann der Server seine Antwort
auch verzögern:
> "Hast du was neues für mich"?
< moment ...
< "ja jetzt schon" / "nein, leider nicht"
Bis zu eine Minute kann der Browser warten (mit Tricks geht auch mehr,
aber nicht immer und überall. Lasse es besser sein).
Es gibt dazu standardisierte Techniken wie SSE und Websockets, die beide
jedoch auf dem gleichen Prinzip beruhen. Du kommst nicht umhin, dass der
Browser eine Verbindung zum Server aufbauen muss.
Oder man baut dafür einen speziellen Browser, dem man über einen zweiten
Kanal mitteilen kann, wann ein refresh nötig ist. Nur mit HTTP und HTML
geht es jedenfalls nicht.
ergo70 schrieb:> meta-refresh funktioniert heute noch wie vor 20 Jahren schon:>> https://www.w3schools.com/tags/att_meta_http_equiv.asp>> Einfach die Seite auf sich selbst verweisen lassen.
und nachdem das ein Ersatz für "echte" HTTP-Header ist, hat der TE ja
auch die Option, einfach echte Header zu senden.
-> Eintrag in der apache-config/.htaccess, HTML bleibt unverändert und
kann per Frontpage/MS-Word/Notepad/whatever aktualisiert werden. Völlig
Laien-Sicher.
Du kannst doch in der HTML Seite (Serverseitig) ein Refresh einbauen.
Der Client lädt diese Seite und der client-seitig Browser mach dann ein
zyklisches Refresh.
Genauso kannst du in der HTML Seite (Serverseitig) ein Ajax-Objekt
einbauen, welches dazu führt, dass der client-seitig Browser die
änderungs-relevanten Teile zyklisch neu lädt.
Stefan ⛄ F. schrieb:> Um es nochmal auf den Punkt zu bringen: Das geht nicht. Beim HTTP> Protokoll gibt es keine Möglichkeit, wo der Server dem Browser irgend> etwas aktiv senden kann.
Erst mal danke für die Antwort.
Was mir gerade aber sehr negativ erscheint, ist Deine Antwort.
Hier im Forum wirft man Dir an einigen Stellen "krankhaftes
Geltungsbedürfnis" vor. Dazu kann ich mich nicht äußern.
Wenn Du aber offenbar völlig inkompetent "nochmal auf den Punkt" bringst
es würde nicht gehen...dann einfach mal die Klappe halten wenn man keine
Ahnung hat.
Keine Ahnung haben, finde ich nicht schlimm, aber so wirken zu wollen
als hätte man diese und dann falsche Fährten zu legen, einen Thread zu
sprengen, völlig destruktiv zu sein, das ist Kappes.
Halte Dich dann besser raus.
Die Hinweise im Thread beweisen genau das Gegenteil und es funktioniert
übrigens auch einwandfrei!
Danke an die wirklichen Helfer.
Ich nehme mal an der Thread ist nun im Eimer, sicher wird es gleich noch
eine Rechtfertigung geben ;-((
HTML Fragender schrieb:> Wenn Du aber offenbar völlig inkompetent "nochmal auf den Punkt" bringst> es würde nicht gehen...dann einfach mal die Klappe halten wenn man keine> Ahnung hat.
Bitte korrigiere des Sachverhalt - wenn du kannst, anstatt jetzt alle
dumm sterben zu lassen.
Zu deiner Erleuchtung beruhen alle hier genannten Ansätze darauf, dass
der Web Browser selbst sich die Updates in gewissen Intervallen vom
Server holt. Also genau das, was ich schrieb.
Ich gebe dir einen Tipp: Behandle Leute, die dir helfen, mit Respekt.
Sonst hilft dir bald keiner mehr.
HTML Fragender schrieb:> Was mir gerade aber sehr negativ erscheint, ist Deine Antwort.
so einen Mist kann man nur schreiben wenn man die Antwort nicht
verstanden hat oder nicht verstehen will.
HTTP geht immer von Client Anfragen aus, das ist doch komplett richtig.
Genau dafür wurden die Websockets entwickelt. Die tunneln ihre Daten in
HTTP weil man meist keinen anderen Port als 80 aufmachen will. Für den
Client sieht es jetzt dynmisch aus, aber mit einer Erweiterung die sehr
lange in einen praktisch genutzten Standard gebraucht hat.
Es geht mit den genannten Tricks wie verzögertem ACK auch, aber das ist
doch Murks.
HTML Fragender schrieb:> Ja natürlich. Darauf habe ich Zugriff.
Dann wäre aus meiner Sicht die Ursprungsfrage geklärt.
Einfach in die HTML Seite ein Refresh oder Ajax einbauen und fertig
PS: Mein Weltbild ist übrigens auch so, dass http-Aktionen immer vom
Client ausgehen und der Server nicht selbständig schicken kann.
Udo schrieb:> Einfach in die HTML Seite ein Refresh [...] einbauen und fertig
Warum nicht per Apache-Config/.htaccess?
das "meta-http-equiv"-Zeuchs ist ja als Workaround für Webdesigner
gedacht, die keinen Zugriff auf die Webserver-Settings haben.
Beim TE ist's genau anders herum, er kann die Webserver-Settings
verändern, hat aber nur begrenzten Einfluss auf den HTML-Seiteninhalt:
HTML Fragender schrieb:> Problem ist auch das es eine Hilfskraft über MS Publisher .o.ä.> erledigen soll. Die überschreiben dann den HTML /JS Code ;-(.
Εrnst B. schrieb:> eim TE ist's genau anders herum, er kann die Webserver-Settings> verändern, hat aber nur begrenzten Einfluss auf den HTML-Seiteninhalt
Mir hat er eben gesagt, dass er Zugriff auf die html-Seiten serverseitig
hat.
Ich würde zyklische Refreshs nicht per Server-Konfig machen. Die würde
ja auch nur das ausgelieferte html modifizieren... Lieber gleich in die
Orginal-html-Quellen reinschreiben, was gemacht werden soll.
Aber viele Wege führen nach Rom :)
Udo schrieb:> Die würde> ja auch nur das ausgelieferte html modifizieren...
Nö. Das setzt einen HTTP-Header, das HTML bleibt unverändert.
Mit <meta http-equiv...> im HTML weist du den Browser an, so zu tun, als
hätte er diesen HTTP-Header gesehen.
Aber egal, funktionieren tut beides.