Zugriff auf TCP-Sockets vom Browser aus

  • Hallo zusammen,


    wer meine Projekte und bisherigen Threads verfolgt, kann sich wohl vorstellen, mit was ich jetzt um die Ecke komm:


    Ich hab für ein Teilprojekt von mir mehrere Raspberry Pis, die jeweils ein LED-Panel ansteuern. Die Pis sind über Python mit TCP-Sockets an einen Pi als Server angebunden. Das funktioniert soweit bisher alles so gut und passt.

    Das Problem kommt jetzt: Ich will die Anzeigen über den Webbrowser steuern. Ja, ich weiß, für JavaScript gibt's WebSockets und damit hab ich die letzten Tage gespielt und getestet, aber das Handling gefällt mir nicht, allein schon, weil es kein vernünftiges Handling für multiple Clients gibt (oder ich es zumindest nicht gefunden hab).


    Deswegen meine Frage: gibt es eine Möglichkeit, wie ich im Browser auf TCP-Sockets zugreifen kann?

    Ich hab auch schon Bridges Websockets/TCP-Sockets probiert, hat mir auch nicht gefallen.

    Ich würde fast alle Umwege gehen, die nur auf dem Server laufen. Es ist wichtig, dass ich auf dem Client nichts brauch/machen muss, ich also jedes Handy, Tablet oder Laptop zum ersten mal hernehmen kann, die Webseite der Steuerung aufrufen kann und das dann sofort läuft, ohne was einrichten oder installieren zu müssen.


    Hat hier jemand Ideen oder kennt sogar was?

    Die Suche nach "TCP-Sockets im Browser" hat nichts sinnvolles ergeben...


    Vielen Dank und

    liebe Grüße


    Fipsi

  • Warum nicht mit Flask oder Bottle eine Webseite mit Steuerung auf dem Server Pi einrichten , die dann über Web Browser aufgerufen wird?

    Steuerung der Untergeordneten Pis erfolgt vom dann vom Server Pi über Sockets.

  • Deswegen meine Frage: gibt es eine Möglichkeit, wie ich im Browser auf TCP-Sockets zugreifen kann?

    Nein, das ist explizit in allen Webbrowsern blockiert und würde ein Scheunentor an Sicherheitslücken aufreißen.

    Sei froh, dass das nicht geht.


    Du wirst bei den Websockets bleiben müssen oder pollen müssen.

    Beides erfordert JavaScript, es seiden du würdest die Seite z.B. jede Sekunde neu laden lassen. Das sieht aber doof aus.


    Wenn die LEDs z.B. auch gesteuert werden sollen, kann man ja eine REST-API einsetzen. Ganz einfach HTTP-Post Requests um was zu machen.


    Für Websockets gibt auch Bibliotheken. Für Python+Flask gibt es z.B. flask-socketio.

    Im getting-stared wird an einer Stelle auch auf den HTML-Quellcode eingegangen.