FHEMWEB mit Websockets hinter haproxy

Begonnen von mdebus, 28 Mai 2018, 16:06:54

Vorheriges Thema - Nächstes Thema

mdebus

Ich versuche gerade, meinen Reverse Proxy von nginx auf haproxy umzustellen, scheitere aber an den Websockets.

Ich bekomme im Browser nur:

fhemweb.js:1111 WebSocket connection to 'wss://meinhostname/fhem?XHR=1&inform=type=status;filter=WEB;since=1527516206;fmt=JSON&fw_id=37591&timestamp=1527516225186' failed:Error during WebSocket handshake: Unexpected response code: 200

Hat jemand einen Konfigurationshinweis für mich?  Hier ist meine Config:


acl     host_fhem               hdr(host) -i    meinhostname

use_backend     bk_fhem         if host_fhem

backend bk_fhem
        server localhost        127.0.0.1:8083          maxconn 1000 weight 10 cookie check

mspa

Hi,

hast du für das Problem eine Lösung gefunden? Ich habe ein ähnliches Fehlerbild mit HaProxy und Fhem.

MfG,
Marlon

albundy118

Hallo, ich kämpfe leider mit dem gleich Problem. Aktuell benutze ich haproxy 2.2.13. Mit version 1.8.x läuft es wunderbar.

Beste Grüße

albundy118

Da die websocket session eigentlich nicht mit einem code geschlossen werden sollte, habe ich mal aus meiner haproxy config "option http-server-close" gelöscht.
Damit scheint es jetzt zu gehen. Ihr müsstet prüfen, dass dies weder im defaults, noch im frontend oder backend steht.

albundy118

Hallo, ich wollte nur Bescheid geben, dass leider das Problem bei mir immernoch vorhanden ist. Es hatte nichts mit der option http-server-close zu tun.
Ich hatte in den defaults aus versehen den mode auf tcp geändert.
Wer http mode in haproxy nicht benötigt, kann aber das Problem mit tcp lösen. Leider benötige ich aber http mode, womit das Problem weiterhin vorhanden ist.

albundy118

Ich glaube ich komme dem Problem näher.
Das Problem liegt wohl nicht an HAproxy, da vom Backend das http 200 kommt, hier muss aber 101 für protocol upgrade kommen.

HAproxy benennt alle HTTP header name in lower case um.
Nachdem ich inhaltlich 2 identische Header verglichen hatte, bei einem kommt 200, beim anderen 101, probiert ich mit den Header Namen herum.
Header sind laut RFC nicht case sensitive, aber es scheint, dass FHEM beim HEADER "sec-websocket-key" vs "Sec-WebSocket-Key" Probleme hat.
Sobald dieser HEader in lowever case kommt, erhaltet man eine 200 Antwort. Das ist aus meiner Sicht ein Bug.

Nun weiß ich leider nicht, wie ich potentielle issues bei FHEM melden kann?  Wer kann hier weiterhelfen?

Beste Grüße

rudolfkoenig

ZitatSobald dieser HEader in lowever case kommt, erhaltet man eine 200 Antwort. Das ist aus meiner Sicht ein Bug.
Habs versucht zu fixen, bitte um Feedback.

albundy118

Oh, das ging ja super schnell. Danke für promptes angucken.
Ich habe gerade mal update durchlaufen lassen:
2021.04.23 22:20:00.888 1: UPD ./CHANGED
2021.04.23 22:20:00.971 1: UPD ./configDB.pm
2021.04.23 22:20:01.008 1: UPD FHEM/10_FBDECT.pm
2021.04.23 22:20:01.045 1: UPD FHEM/30_HUEBridge.pm
2021.04.23 22:20:01.084 1: UPD FHEM/49_IPCAM.pm
2021.04.23 22:20:01.121 1: UPD FHEM/69_SoftliqCloud.pm
2021.04.23 22:20:01.159 1: UPD FHEM/98_ComfoAir.pm
2021.04.23 22:20:01.195 1: UPD FHEM/98_DOIF.pm
2021.04.23 22:20:01.252 1: UPD FHEM/98_WeekdayTimer.pm
2021.04.23 22:20:01.431 1: UPD FHEM/HttpUtils.pm
2021.04.23 22:20:01.469 1: UPD FHEM/lib/AttrTemplate/mqtt2.template
2021.04.23 22:20:01.615 1: UPD lib/FHEM/Core/Authentication/Passwords.pm


Leider verhällt sich das immer noch fehlerhaft. Zum Vergleich, 2 identische Requests, 1x mit "sec-websocket-key" und der andere mit "Sec-WebSocket-Key".

Welches File wurde denn aktualisiert?

albundy118

Ich sehe gerade, der letzte commit im trac ist ja von 18:06. https://svn.fhem.de/trac/log/trunk/fhem?rev=24315
Sorry die doofe Frage, aber muss ich noch etwas warten bis ich den commit sehe?

rudolfkoenig

ZitatSorry die doofe Frage, aber muss ich noch etwas warten bis ich den commit sehe?
Normalerweise bis zum naechsten Tag etwa um 8.
Der Kopierprozess startet um 7:45, und dauert wenige Minuten.

albundy118

Danke für die Erklärung.
Habe gerade das Update reinlaufen lassen und es funktioniert jetzt wunderbar!
Vielen Dann für den schnellen Fix!

Beste Grüße

mspa

Danke rudolfkoenig, bei mir läuft es jetzt auch :D.

MfG Marlon