NEWS
Welche Socket-Lib für eigene Adapter?
-
Ich habe bis heute nicht so richtig verstanden, welche Libs und Repos für was eigentlich gedacht sind. Es gibt einfach unglaublich viel und ich finde keine so richtige Übersicht.
Hoffentlich kann mir jemand auf die Sprünge helfen, was der aktuellste Weg ist und welche Libs/Adapter "legacy" sind.
Ich hätte gerne eine Socket-Verbindung in einem eigenen Tab mit Auth-Check / Session usw., aber möchte dann selbst Daten austauschen und verarbeiten. Also brauche ich einen eigenen Server im Adapter, richtig? Dafür gibts ja mehrere Libs:
- Client: https://github.com/ioBroker/ioBroker.ws.client
@iobroker/ws
= npm@iobroker/ws
- Server-Seite: https://github.com/ioBroker/ioBroker.ws.server
@iobroker/ws-server
= npm@iobroker/ws-server
Das nutzen scheinbar die "alten" Materialize-Configs:
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
.
Das ist wohl genau das gleiche wie<script type="text/javascript" src="./../../lib/js/socket.io.js"></script>
.Kommentare in den Dateien passen jedenfalls dazu:
v 1.1.2 (2022_08_18)
.Also ist das der "alte Weg" und nicht mehr zu verwenden?
Neuere Adpater mit eigenem React-Tab (MUI v5)
Diese nutzen scheinbar
- Server: Welcher Server wird hier angesprochen? Der vom Admin-Adapter direkt?
- Client: https://github.com/ioBroker/socket-client
- wird z.B. genutzt von https://github.com/ioBroker/adapter-react-v5/
Oder
- Server: https://github.com/ioBroker/webserver (nur für Zertifikats-Validierung usw.)?
- Client: ???
Adapter (ohne Instanzen)
Wofür sind dann eigentlich diese beiden "Adapter"? Die haben ja nichtmal eine Instanz. Der Admin-Adapter braucht die ja nicht - nur der Web-Adapter hat diese als Dependency:
und beide nutzen https://github.com/ioBroker/ioBroker.socket-classes richtig?
- Client: https://github.com/ioBroker/ioBroker.ws.client
-
@haus-automatisierung sagte in Welche Socket-Lib für eigene Adapter?:
Ich habe bis heute nicht so richtig verstanden, welche Libs und Repos für was eigentlich gedacht sind.
Das geht nicht nur dir so
@haus-automatisierung sagte in Welche Socket-Lib für eigene Adapter?:
Welcher Server wird hier angesprochen? Der vom Admin-Adapter direkt?
Ja, das ist richtig. Ein Blick die Entwicklertools vom Browser und man sieht wohin die Verbindung aufgebaut wird.
Am Ende ist es so auch die einzig Sinnvolle Variante, da ein Tab nur im Admin angezeigt wird und nicht alleine Funktioniert.@haus-automatisierung sagte in Welche Socket-Lib für eigene Adapter?:
Client: https://github.com/ioBroker/socket-client
wird z.B. genutzt von https://github.com/ioBroker/adapter-react-v5/
Der Tab im Admin nutzt socket-client indirekt über die adapter-react-v5 Klasse.
So auf die Schnelle hab ich jetzt keinen Unterschied gesehen zwischen AdminConnection und Connection. Beides braucht wohl als Gegenstück eine laufende Admin instanz, für externe Anwendungen kann man auch noch https://github.com/ioBroker/ioBroker.ws verwenden. Damit könnte man dann auf den Admin verzichten.
Ich nehme mal an das auch der Web Adapter als Gegenstelle verwendet werden könnte, da dort auch Websockets integriert ist.https://github.com/ioBroker/ioBroker.socketio das ist der Vorgänger von ioBroker.ws der ist nur noch aus legacy Gründen vorhanden. Im Ursprung hat der die socket.io Lib verwendet, aber ich erinnere mich das es irgendwann massiv Probleme damit gegeben hat. Ging ne ganze weile bis das dann komplett Umgebaut wurde und die Socket.io API Nachgebildet wurde.
@haus-automatisierung sagte in Welche Socket-Lib für eigene Adapter?:
Server: https://github.com/ioBroker/webserver (nur für Zertifikats-Validierung usw.)?
Am Anfang hat ja jeder Adapter die Zertifikate selbst verwaltet und sich um die Erneuerung bei Let's Encrypt gekümmert. @Rob_in hat dann Vorgeschlagen das ganze zu Zentralisieren und das dann auch Umgesetzt.