NEWS
Kann man socketio um eigene Kommandos erweitern?
-
Hallo zusammen,
ich habe jetzt einige Zeit gesucht und den Quellcode des web Adapters und des socketio Adapters durchwühlt. Beim socketio Adapter habe ich auch etwas entdeckt, was auf eine Erweiterbarkeit hinweisen dürfte (-> lib/socket.js -> Schlüsselwort für die Suche: extensions), aber ich habe keine Möglichkeit gefunden darauf zurückzugreifen. Leider wird auch beim web Adapter das io Objekt nicht an die Erweiterungen übergeben, also sehe ich da auch keine Möglichkeit mich einzuhängen.
Vielleicht habe ich ja was übersehen. Weiß hier jemand mehr dazu?
-
was steht im io objekt drin?
die Kommunikation zwischen vis und adapter erfolgt über die datenpunkte.
diese kommunikation wird durch iobroker und socketio bereitgestellt.
was du dann da umsetzt ist ziemlich beliebig
ich würde deswegen am bereitgestellten Framework keine Erweiterung machen wollen.was willst du den mit dieser Erweiterung grundsätzlich erreichen?
Evtl. gibt es alternativen, wie du mit dem Gegebenheiten dies erreichen kannst. -
Im io Objekt ist die socketio Instanz enthalten, die von iobroker.socketio/lib/socket.js erzeugt wird. Im Endeffekt steckt die Instanz von socket.io dahinter. Man könnte also darüber auf Kommandos horchen per on(...). (Was ich so aus dem Quellcode gelesen habe.)
Zum Hintergrund: Ich wollte damit feststellen können, ob bzw. welche Berechtigung ein Benutzer auf einen State hat. Mittlerweile habe ich rausgefunden, dass man das über getObject() herausfinden kann. Das zurückgelieferte Objekt hat das Unterobjekt ACL, welches die Berechtigungsdaten enthält; Also: Besitzer, Gruppe, Berechtigungen als Zahl auf das Object und den State. Leider hatte ich in der Dokumentation (Core Concept) dazu nichts gefunden.
Fazit: Mein ursprüngliches Problem kann ich lösen. Trotzdem wundert es mich noch, dass wohl eine Erweiterbarkeit des socketio vorgesehen ist, aber scheinbar (noch) nicht wirklich verwendet wird.