Hallo,
nachdem ich nun so langsam bei eibPC HomeControl wieder Fahrt aufnehme und das Ganze im eigenen Haus einsetze stellen sich ein paar neue Fragen.
Die Kommunikation über die Web-Server Brücke "refresher.php" ist ja nicht besonders effizient, wenn man bedenkt, dass bis zum Bus 4 "Hops" stattfinden. Client ruft "writer.php" auf, "writer.php" schreibt in Webserver Socket, "refresher.php" schreibt dann in eibPC und der eibPC schaufelt das dann nach Konvertierung der GA endlich in den Bus ...
Mit der Release der neuesten HTML 5 Browser haben Websockets endlich Einzug gehalten, damit kann eine TCP Verbindung direkt zwischen Client und eibPC auf offiziellem Weg aufgebaut werden, bidirektional und mit allen Schikanen.
Aus eibPC Sicht, kann die Verbindung genau so wie jede andere TCP-Verbindung gehandhabt werden. Es muss lediglich protokollseitig ein Handshake wie im folgenden Beispiel durchgeführt werden:
In der Folge müssen Text Übertragungen zwischen einem 0x00 und einem 0xFF Byte gepackt werden. Das ist aber mit einem eibPC Makro leicht zu bewerkstelligen. Sonstiger Overhead entsteht nicht.
Nun die Frage: wie könnte man am geschicktesten obiges Handshake in das eibPC Homecontrol Makro packen, so dass man mit einer einfachen Erweiterung die vorhandene Funktionalität nutzen kann?
Mir fehlen da so ein paar geschickte String Funktionen, um den Handshake zu realisieren. Im Wesentlichen müssen im REQUEST Host, Origin und Protokoll rausgeparst werden, damit sie in der RESPONSE wiederverwendet werden können.
Gruss
Arno
nachdem ich nun so langsam bei eibPC HomeControl wieder Fahrt aufnehme und das Ganze im eigenen Haus einsetze stellen sich ein paar neue Fragen.
Die Kommunikation über die Web-Server Brücke "refresher.php" ist ja nicht besonders effizient, wenn man bedenkt, dass bis zum Bus 4 "Hops" stattfinden. Client ruft "writer.php" auf, "writer.php" schreibt in Webserver Socket, "refresher.php" schreibt dann in eibPC und der eibPC schaufelt das dann nach Konvertierung der GA endlich in den Bus ...
Mit der Release der neuesten HTML 5 Browser haben Websockets endlich Einzug gehalten, damit kann eine TCP Verbindung direkt zwischen Client und eibPC auf offiziellem Weg aufgebaut werden, bidirektional und mit allen Schikanen.
Aus eibPC Sicht, kann die Verbindung genau so wie jede andere TCP-Verbindung gehandhabt werden. Es muss lediglich protokollseitig ein Handshake wie im folgenden Beispiel durchgeführt werden:
Code:
REQUEST: GET /Channel HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: myServer:8876 Origin: [URL="http://myserver:8876/"]http://myServer:8876[/URL] WebSocket-Protocol: mySubprotocol.example.org RESPONSE: HTTP/1.1 101 Web Socket Protocol Handshake Upgrade: WebSocket Connection: Upgrade WebSocket-Origin: [URL="http://myserver:8876/"]http://myServer:8876[/URL] WebSocket-Location: ws://myServer:8876/Channel WebSocket-Protocol: mySubprotocol.example.org
Nun die Frage: wie könnte man am geschicktesten obiges Handshake in das eibPC Homecontrol Makro packen, so dass man mit einer einfachen Erweiterung die vorhandene Funktionalität nutzen kann?
Mir fehlen da so ein paar geschickte String Funktionen, um den Handshake zu realisieren. Im Wesentlichen müssen im REQUEST Host, Origin und Protokoll rausgeparst werden, damit sie in der RESPONSE wiederverwendet werden können.
Gruss
Arno
Kommentar