I started now with Pubsubhubbub (and all about realtime things), but I amhaving trouble with the Subscriber option.
I'm trying to develop a webapp in PHP to:
- Subscribe a RSS (previously Published) to the Hub (http://pubsubhubbub.appspot.com/);
- Read notifications (updates) from the Hub for the subscription; without succeed!!! :(
I verify that exist a library in php to the Subscriber (in Git), but using this lib can't make the Subscribe work's (get a 409 error!).
How can I do this?
This is an old question and the PHP library ddluis linked to has many flaws.
The recommended PHP subscriber in the Google Code wiki is PuSHSubscriber:
http://github.com/lxbarth/PuSHSubscriber/
UPDATE:
I forked PuSHSubscriber: http://github.com/bobdia/PuSHSubscriber
I've made a few incompatible changes with the original. A simple implementation can be found in the /example directory. This is not meant for real use, just for demonstration purposes. I hope you find it useful.
The first thing I'd try is forget about libraries and try to understand what's happening in the context of a subscriber exactly. It should be really really straightforward to build a script that handles all this together.
A subscriber application must do 2 things :
- Acknowledge the susbcription : the hub will verify the intent of the susbcriber. It's a GET request
- Deal with incoming pings. It's a POST request.
So let's start :
- Put a script somewhere on the web (it must be accessible from behind a firewall) which must be bale to handle to GET requests from the hub. Make sure it only echoes the
hub.challenge
param that it gets in the response's body and returns 200. - Send the following from your command line :
curl -X POST http://pubsubhubbub.appspot.com/ -d'hub.mode=subscribe' -d'hub.verify=sync' -d'hub.topic=http://the.feed.url' -d'hub.callback=http://the.script.url' -D-
- You should see an incoming verification request on the script. Ideally (if you followed step 1, it should echo the hub.challenge and return a 200.
If this was all fine the curl request that you send should tell you that the hub returned a 204. If you get anything else, check the body of the response, it will indicate you what went wrong.
Later...
- Your script will get a POST request. This is a notification of new content!
- Parse the raw body (XML) of this POST request, it contains the feed, only with the new entries.
- Do whatever needs to be done with the parsed content (save into a database... etc).
I hope this helps. You can also use this tool to debug your subscription of you need help.
Some code that may be helpful, with good docs:
Example feed agregator:
来源:https://stackoverflow.com/questions/2072591/how-do-i-use-the-subscriber-option