HTTP/2 Client mit Server Push in Symcon/PHP?

Hallo zusammen,

ich benötige für ein Modul einen HTTP/2 Client, der Server Push Nachrichten empfangen kann. Wenn ich es richtig verstanden habe, benötige ich etwas ähnliches wie den SSE Client - nur eben auf HTTP/2 Basis.

Habe noch keine Lib für PHP gefunden, die HTTP/2 vollständig implementiert. Für die anderen HA-Systeme auf Basis von Python oder NodeJS gibt’s ja schon libs dafür.

Hat jemand eine Idee, wie man das in Symcon bekommt?

Wenn ich das richtig verstanden habe, werden einfach mehrere Dateien/HTTP Antworten auf eine Anfrage gesendet.


CURL soll es wohl können.

Davon abgesehen das Server Push tot ist (die meisten haben das abgekündigt), ist es auch nicht für Events wie SEE gedacht.
Michael

Danke schonmal für deinen Input.

Das mag schon sein, dennoch hat das ein großer Anbieter mit a jetzt so umgesetzt.

Nach meinen Recherchen wird es mit curl schwierig:

  1. In curl für php ist http2 standardmäßig deaktiviert (wahrscheinlich nicht grundlos). In symcon ist es auch nicht enthalten:
  2. Da ich den Rückkanal dauerhaft aufrecht erhalten muss, müsste ich dauerhaft einen PHP-Thread laufen habe. Das ist eher nicht im Sinne des Erfinders - auch wenns inzwischen in IPS wohl möglich wäre.

Aktuell sehe ich nur die Möglichkeit, das Protokoll selbst zu implementieren und in Verbindung mit einem Client-Socket zu nutzen. Das wär wohl zu viel Aufwand für mich.
Vielleicht hat ja noch jemand eine andere Idee…

Hatte nur curl/libcurl geschaut, da ist es wohl noch enthalten.
Das mit dem ClientSocket wäre bestimmt eine Möglichkeit, aber warum permanent eine Verbindung aufrecht erhalten?
Server Push war nie für Events/Rückkanal gedacht, ist ja total daneben wenn die das dafür nutzen.

Onvif und die Bosch SmartHome API nutzen auch eine Art von HTTP Push, auch wenn es jeweils anders genannt wird.
Da wird eine Verbindung aufgebaut und so lange aktiv gehalten, bis entweder Daten von der Gegenseite gepusht werden, oder das Timeout erreicht ist. Anschließend wird wieder eine neue Verbindung aufgebaut.
Das funktioniert mit curl in PHP sehr gut.
Michael

Danke für den Hinweis,

könnte gut sein, dass es auch so abläuft, da muss ich mich mal tiefer einwühlen. HTTP/2 wird aber trotzdem benötigt.

@paresy Ihr baut PHP doch selber, oder? Könnte man die Option für curl nicht aktiveren?
Michael