Autor Thema: Vorschlag: EventSource support für HttpUtils  (Gelesen 665 mal)

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20831
Vorschlag: EventSource support für HttpUtils
« am: 14 Juli 2021, 20:33:01 »
hallo rudi,

ich bin gerade dabei event support in das HUEBridge modul einzubauen. wie es ausschaut hat philips bzw. signify sich dafür das EventSource protokoll ausgesucht. das ist älter als websockets und basiert auf chunked. der knackpunkt für das hue modul ist das dabei nicht wie bei der aktuellen chunked implementierung gewartet wird bis alles komplett ist, sondern der callback für jeden chunk aufgerufen werden müsste.

der folgende patch tut genau das. da es an einem auf text/event-stream gesetzen accept header (und das auch nur im nonblocking fall) erkannt wird sollte das ganze völlig rückwärts kompatibel sein.

Index: HttpUtils.pm
===================================================================
--- HttpUtils.pm (revision 24746)
+++ HttpUtils.pm (working copy)
@@ -621,6 +621,8 @@
   $s = 0 if($hash->{protocol} eq "https");

   if($hash->{callback}) { # Nonblocking read
+    $hash->{EventSource} = 1 if($hdr =~ m/Accept:\s*text\/event-stream/i);
+
     $hash->{FD} = $hash->{conn}->fileno();
     $hash->{buf} = "";
     delete($hash->{httpdatalen});
@@ -729,7 +731,16 @@
         return 1;
       }
       return 0 if(length($r) < $l);
-      $hash->{httpdata} .= substr($r, 0, $l);
+
+      my $ret = substr($r, 0, $l);
+      if( $hash->{EventSource} ) {
+        $hash->{callback}($hash, undef, $ret);
+
+      } else {
+        $hash->{httpdata} .= $ret;
+
+      }
+
       $hash->{buf} = substr($r, $l);
     }
     return 0;
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24493
Antw:Vorschlag: EventSource support für HttpUtils
« Antwort #1 am: 15 Juli 2021, 08:23:26 »
Danke, habs nach einem kurzen Test unveraendert eingecheckt.

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20831
Antw:Vorschlag: EventSource support für HttpUtils
« Antwort #2 am: 15 Juli 2021, 10:45:35 »
danke!
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH