Hallo,
nach dem Umzug meines fhem in einen docker container mit dem Image von
https://registry.hub.docker.com/u/fhem/fhem/
bekomme ich den Websocket von fronthem nicht wieder dazu, mit mir zu sprechen.
Docker network ist bridge, port 2121 ist extern an intern 2121 tcp gebunden.
Die Clients geben keinen Fehler, fhem gibt keinen Fehler, die Clients melden sogar connected in fhem, aber es kommen einfach keine Daten über den websocket.
Die config aus ../www/fronthem/... habe ich vom alten fhem übernommen.
Alle nötigen perl Module sind da, loopback Adapter ist da.
Wie kann ich weiter testen?
Der WS scheint zu existieren, aber bleibt im handshake stecken:
CAUTION! Request has not finished yet sehe ich im debug view mit F12 im network WS bei Timing.
Aber: was kann ich tun? @Jörg, irgendeine Idee?
leider keine. Mir fehlt da leider auch Docker Verständnis. Grundsätzlich, und ab hier fängt raten an, benötigt ein ws zb in Proxys auch eine Extrabehandlung. Eventuell benötigt der Docker auch Sonderbehandlungen. Aber: funktioniert der Websocket in fhemweb ?
Kann ich den Port von 2121 auf etwas anderes setzen? Ich habe vergessen, wo... ;-))
ja konfigurierbar in line #91 in 01_fronthem.pm ;)
$cfg->{port} = 2121;
Es sieht so aus, also ob die außerhalb von Docker sinnvolle Verwendung von localhost mit loopback auf 127.0.0.1 innerhalb eines Containers nicht funktioniert, da der relevante localhost hier 127.17.0.4 oder so etwas ist.
https://stackoverflow.com/questions/54101508/how-do-you-dockerize-a-websocket-server/54102318#54102318
Ich muss also entweder am hostile Schrauben oder am frontHEM.pm oder am local Host File.
Womit würdest Du starten?
uh. Ich bin mir aber gar nicht so sicher ob das in Deinem Fall die Ursache ist. Der stack overflow bezieht sich mMn auf eine Connection von außerhalb des Dockers. Steht denn was im fhem log? Die localhost Verbindung kommt nur innerhalb des Dockers zum tragen.
Ansonsten: persönlich würde ich mit Änderungen in fronthem anfangen. Zumindest solange bis ichs besser verstehe. Änderungen am hostfile sind vielleicht als Lösung geeignet. Aber hat das Nebeneffekte für den Rest des Systems ?
Der code in fronthem ist in line #620 PeerHost => 'localhost',
vg
joerg