Seite 1 von 1

SSE oder Websocket?

Verfasst: Dienstag 1. Dezember 2020, 15:19
von SVblue
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.

Re: SSE oder Websocket?

Verfasst: Dienstag 1. Dezember 2020, 15:56
von Sirius3
Websocket ist das richtige: eine Webseite läuft mit Browser, das hat mit PHP gar nichts zu tun, da brauchst Du Javascript.

Re: SSE oder Websocket?

Verfasst: Dienstag 1. Dezember 2020, 16:57
von SVblue
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* ??

Re: SSE oder Websocket?

Verfasst: Dienstag 1. Dezember 2020, 17:48
von __deets__
Wie soll der Client denn dann an die Information kommen, das sich was geändert hat? Du verdoppelst doch damit nur Menge an Verbindungen, ohne Not.

Re: SSE oder Websocket?

Verfasst: Dienstag 1. Dezember 2020, 18:09
von nezzcarth
@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.

Re: SSE oder Websocket?

Verfasst: Dienstag 1. Dezember 2020, 18:21
von SVblue
@__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.

Re: SSE oder Websocket?

Verfasst: Dienstag 1. Dezember 2020, 19:06
von __deets__
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.

Re: SSE oder Websocket?

Verfasst: Dienstag 1. Dezember 2020, 19:55
von SVblue
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)

Re: SSE oder Websocket?

Verfasst: Mittwoch 2. Dezember 2020, 09:11
von Sirius3
Dann beschäftige Dich erst einmal mit Webservern für Python, also z.B. Flask. Und wenn Du das verstanden hast, kannst Du ein Modul für Websockets für Flask dazunehmen.