ich habe hier ein Messgerät dessen Werte ich über python abgerufen und in eine Datenbank gespeichert werden. Getriggert wird dies durch eine SPS.
Das ist soweit kein Problem.
Nun würde ich das in dem Moment auch auf einer Website darstellen (der Betrachter hat hier keinen Einfluss auf die Seite/keine Aktionsmöglichkeit).
Problem dabei, ich möchte die Website, oder Teile darin (AJAX), nicht permanent "refreshen" lassen da es sein kann, dass sich tagelang nichts ändert, ein anderes mal evtl. jede Sekunde.
Ideal wäre, wenn die Werte zum Client (Website) gesendet werden wenn sie erfasst werden/sich ändern.
SSE (server-sent events)... klingt erstmal ganz gut aber bislang habe ich nur Beispiele gefunden die alle 5 Sekunden aktualisieren - leider nicht bei Bedarf.
Websocket kam mir auch in den Sinn, aber hier habe ich das Senden von python an eine Website (php) nicht geschafft.
Hatte mir überlegt das auf Basis eines Chats zu machen... der Server wäre hier gleichzeitig auch ein Client der Informationen sendet.
Hat jemand evtl. ein einfaches Beispiel?
Da es sich nicht um sicherheitsrelevante Werte handelt und auch nicht über Internet genutzt wird (nur im LAN) genügt rein die Funktionalität.
SSE oder Websocket?
f*ck, stimmt (leider)... mein "letzter" Gedanke war, den Websocket-Server auf den Client laufen zu lassen... so kann der eigentliche Server, auf dem die Daten eingehen, bei Bedarf eine Verbindung zum Client aufbauen und die Informationen zur Darstellung senden. Somit müsste keine Permanentverbindung bestehen. *hmpf* ??
@SVblue: Zu SSEs hatte ich vor eine Weile hier auch mal ein Meinungsbild eingeholt (viewtopic.php?f=7&t=48566) – Und das fiel nicht besonders positiv aus. Ich habe die weiteren Experimente dann eingestellt, da das wohl doch zu exotisch ist und unschöne Einschränkungen hat.
Zuletzt geändert von nezzcarth am Dienstag 1. Dezember 2020, 18:25, insgesamt 1-mal geändert.
@__deets__: Warum verdoppeln? Der PC, der die Website/Anzeige darstellen soll - so es möglich wäre - müsste den Websocketserver darstellen, also permanent gestartet.
Der Datenbankserver, der die Daten vom Messgerät erhält, baut im Falle von eingehenden Daten eine Websocket-Verbindung auf, sendet die Daten und beendet die Verbindung wieder.
So der Plan, jedoch sehe ich z.Z. das Problem beim Websocketserver... der müsste auf dem Client-PC laufen, ausschließlich im Browser (javascript?), denn dieser Client ist nur eine Anzeige - Webkiosk.
Der Datenbankserver, der die Daten vom Messgerät erhält, baut im Falle von eingehenden Daten eine Websocket-Verbindung auf, sendet die Daten und beendet die Verbindung wieder.
So der Plan, jedoch sehe ich z.Z. das Problem beim Websocketserver... der müsste auf dem Client-PC laufen, ausschließlich im Browser (javascript?), denn dieser Client ist nur eine Anzeige - Webkiosk.
Ich glaube du hast nicht verstanden, was websockets sind. Die benutzt man zwischen Web-Server und Browser. Und wenn du den Server auf Maschine A laufen lässt, und deren Browser auf Maschine B (so klingt deine Beschreibung von Client), dann bringt es genau gar nichts, einen Server auf B zu betreiben. Das zumindest beschreibst du hier. Denn an den müssen die Daten um die es geht ja auch erstmal geliefert werden. Daher “Verdopplung”.
Wer auch immer die Webseiten ausliefert, die B darstellt - DASS ist der Ort, wo ein websocket Server laufen muss.
Wer auch immer die Webseiten ausliefert, die B darstellt - DASS ist der Ort, wo ein websocket Server laufen muss.
Aktuell ist es eine reine HTML-Datei die sich auf dem Client befindet. Diese wird per Meta-refresh immerwieder neu geladen. Ändern sich die Daten auf dem Server erzeugt er eine gleichnamige HTML-Datei und legt diese auf dem Client per ssh ab und überschreibt so die alte.
Das funktioniert grundsätzlich stabil... flackert natürlich. Immerhin findet die Datenübertragung nur statt wenn wirklich neue Daten vorliegen.
Nun suche ich schlicht nach eine besseren Lösung (ohne permanenten Refresh) um bei neuen Daten diese auch Darstellen zu können.
Ich bin für alles offen was clientseitig in diesem Fall möglich ist... hier läuft nur Firefox oder Chrome im Kioskmode. (Porteus Kiosk)
Das funktioniert grundsätzlich stabil... flackert natürlich. Immerhin findet die Datenübertragung nur statt wenn wirklich neue Daten vorliegen.
Nun suche ich schlicht nach eine besseren Lösung (ohne permanenten Refresh) um bei neuen Daten diese auch Darstellen zu können.
Ich bin für alles offen was clientseitig in diesem Fall möglich ist... hier läuft nur Firefox oder Chrome im Kioskmode. (Porteus Kiosk)