Ich schreibe an einer Homepage, mit der ich RSS-Feeds und Podcasts laden darstellen kann. Natürlich möchte ich meine User auf jede neue Episode ihrer Podacsts aufmerksam machen sobald diese erscheinen.
Ich wende das im Topic genannte Verfahren an, das einfach sein soll zu implementieren.
Bisher folgte ich diesem Howto:
https://blog.superfeedr.com/howto-pubsubhubbub/
und einem Lehrvideo
https://www.youtube.com/watch?v=KeZ3WzoUYi8
Manche RSS Feeds sollen dies ja realtime unterstützen, was man an folgendem XML Code erkennen kann, den der Publisher zusätzlich einfügt:
Meine Rolle, oder die meiner Homepage ist die eines subscribers. Den Service der umgehenden Benachrichtigung meinerseits (bzw. meiner Callback-URL) stellt dann der Hub bereit, in obiger Beispielzeile ist es Superfeedr.
Meine Homepage habe ich hauptsächlich mit PHP programmiert und eine Testversion läuft davon (passwortgeschützt) auf meinem Rechner unter localhost.
Damit der Hub mich erreichen kann, habe ich eine Callback-Adresse außerhalb angelegt die vom WWW, also vom Hub erreichbar ist.
Subscribe:
Das Abbonieren des Feeds als Subscriber funktioniert dann gut und ich erhalte die Mitteilung:
Was bedeutet dass die Subscribtion erfolgreich war, also okay.
Sobald aber vom Publisher (beispielsweise ein Blog oder Podcast) ein neuer Beitrag veröffentlicht wird, sollte dann irgendwie dieser neue Beitrag in Form eines eigenen RSS-Feeds erscheinen, statt obiger Meldung.
Dies klappt aber nicht. Stattdessen bekomme ich immer wieder die Meldung HTTP/1.1 204 No Content, auch wenn der Feed ein Update hatte.
Und an dieser Stelle bräuchte ich bitte Unterstüttzung.
Testblog:
Ich benutze, um meine Bemühungen zu testen einen Testblog und einen dazugehörigen dynamschen Feed von dritter Seite:
Blog: http://push-pub.appspot.com/
RSS-Feed: http://push-pub.appspot.com/feed
Meine Subsriber Seite:
Mein Callback Script:
Ich wende das im Topic genannte Verfahren an, das einfach sein soll zu implementieren.
Bisher folgte ich diesem Howto:
https://blog.superfeedr.com/howto-pubsubhubbub/
und einem Lehrvideo
https://www.youtube.com/watch?v=KeZ3WzoUYi8
Manche RSS Feeds sollen dies ja realtime unterstützen, was man an folgendem XML Code erkennen kann, den der Publisher zusätzlich einfügt:
Code:
<link rel="hub" href="https://pubsubhubbub.superfeedr.com">
Meine Homepage habe ich hauptsächlich mit PHP programmiert und eine Testversion läuft davon (passwortgeschützt) auf meinem Rechner unter localhost.
Damit der Hub mich erreichen kann, habe ich eine Callback-Adresse außerhalb angelegt die vom WWW, also vom Hub erreichbar ist.
Subscribe:
Das Abbonieren des Feeds als Subscriber funktioniert dann gut und ich erhalte die Mitteilung:
Code:
HTTP/1.1 204 No Content X-Powered-By: The force, Luke Vary: X-HTTP-Method-Override X-Superfeedr-Host: supernoder8.superfeedr.com Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: GET, POST, PUT, DELETE Access-Control-Allow-Headers: Authorization PubSubHubbub-Version: 0.3 ETag: W/"0-0" Date: Sat, 17 Oct 2020 06:07:39 GMT Connection: close
Sobald aber vom Publisher (beispielsweise ein Blog oder Podcast) ein neuer Beitrag veröffentlicht wird, sollte dann irgendwie dieser neue Beitrag in Form eines eigenen RSS-Feeds erscheinen, statt obiger Meldung.
Dies klappt aber nicht. Stattdessen bekomme ich immer wieder die Meldung HTTP/1.1 204 No Content, auch wenn der Feed ein Update hatte.
Und an dieser Stelle bräuchte ich bitte Unterstüttzung.
Testblog:
Ich benutze, um meine Bemühungen zu testen einen Testblog und einen dazugehörigen dynamschen Feed von dritter Seite:
Blog: http://push-pub.appspot.com/
RSS-Feed: http://push-pub.appspot.com/feed
Meine Subsriber Seite:
Code:
<?php header('Content-Type: text/html; charset=utf-8'); $hub_url ='https://pubsubhubbub.superfeedr.com'; $feed='http://push-pub.appspot.com/feed'; $callback_url="https://taifunorkan.de.cool/pubsubhubbub-callback.php"; $post_fields= array( 'hub.mode' => 'subscribe', 'hub.topic' => $feed, 'hub.callback' => $callback_url, 'hub.verify' => 'sync' ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$hub_url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($post_fields)); // Receive server response ... curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 1); $server_output = curl_exec($ch); $info = curl_getinfo($ch); curl_close ($ch); echo $server_output';
Code:
<?php if (isset($_GET['hub_challenge'])) { // echo back the random string to the hub // to verify that it is the correct subscriber // HTTP 200 that everything is okay! http_response_code(200); echo $_GET['hub_challenge']; return; } else { http_response_code(404); return; }
Kommentar