Mahlzeit!
Habe aktuell ein Problem, dass mit der aktuellen git-Version von FTUI Longpoll auf AJAX zurück fällt.
Kurz zu meinem Setup: Ich setze FTUI auf einem separaten Apache ein, für FTUI verwende ich ein separates WEB-Device ("WEB_FTUI", meta web_device und fhemweb_url sind entsprechend gesetzt.)
Nach dem Aufruf der Seite erhalte die die Fehlermeldung "longpoll: websockets not supportetd or not activated > fall back to AJAX". Das Problem besteht aus zwei Teilproblemen.
Teilproblem ANach einigem Debugging musste ich Folgendes feststellen:
- ftui.config.webDevice ist korrekt gesetzt: "WEB_FTUI"
- ftui.deviceStates[ftui.config.webDevice] ist leer.
- ftui.deviceStates["WEB"] ist korrekt gesetzt.
Workaround A: Lügen, konkret:
<meta name='web_device' content='WEB'>
(longpoll von WEB ist ebenfalls auf websocket gesetzt).
Teilproblem BMit dem obigen Workaround liefert ftui.deviceStates[ftui.config.webDevice].longpoll.val nun 1 zurück, nicht 'websocket'.
Workaround B: csrfToken in WEB_FTUI auf eine Konstante setzen statt random.
Patrick
Du musst einen anderen Namen als WEB_* benutzen.
Ich ignoriere diese komplett, weil das die TEMPORARY Instanzen sind. Könnte man vielleicht mit einem passenden RegEx besser machen, aber ich bin mir nicht sicher, ob das immer so gebildet wird:
WEB_<PEER>_<PORT>
/WEB_\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}_\d{5}/
Mahlzeit!
Danke für die Info.
Ggf. könnte man einen Zwischenweg gehen und auf WEB_.+_.+ oder so matchen bzw. alternativ dokumentieren (z. B. bei "The name of your FHEMWEB device" in der README.md).
Habe das jetzt bei mir angepasst. Hast Du noch eine Idee zu der Sache mit dem csrfToken? Oder ging das nie und ist mir nur nicht aufgefallen?
Patrick
csrfTokenHTTPHeader auf 1 gesetzt?
Ist lt. Doku der Default. Also ja.
Von unterwegs gesendet.
Stimmt aber nicht. Setze es lieber auf 1
Nachtrag: wenn das INTERNAL CSRFTOKEN da ist, muss auch der Response-Header X-FHEM-csrfToken mitkommen
Wenn da dann alles funktioniert, dürfte man dann erfahren, wie deine Einstellungen dann gesetzt sind?
Danke!
Mahlzeit!
Jetzt funktioniert es interessanterweise.
@drhirn:
defmod WWW_FTUI FHEMWEB 8001 global
attr WWW_FTUI CORS 1
attr WWW_FTUI longpoll websocket
<meta name="longpoll_type" content="websocket">
<meta name='web_device' content='WWW_FTUI'>
<meta name="fhemweb_url" content="http://fhem:8001/fhem">
Patrick