A Walk in the rssCloud.org
A couple of months ago, Dave Winer started a site called rssCloud.org. The website documents his progress in building real-time messaging components using RSS as the backbone. This week I became aware of his work through a Read Write Web article. Well, needless to say, this is of keen interest to me and I decided to give Dave’s process a try tonight.
The documentation on rssCloud.org includes all of the details, but I’ll summarize the process below:
- We want to be notified in real-time whenever an RSS feed changes.
- To enable notifications, the feed should contain a <cloud> element. The <cloud> element tells us where and how to request real-time change notifications.
- Using the information from the <cloud> element, we submit a request to an rssCloud service. We tell the service: “Whenever the RSS feed changes, send a notification to <this> address.”
- The owner of the RSS feed publishes an update and pings the rssCloud service. (This part of the process is the same as pinging a service like Technorati after you publish a post.)
- The rssCloud service looks up our earlier request and then notifies us that the RSS feed has changed.
- We know immediately that the feed has changed. It’s then up to us to read the RSS feed and actually find the changes.
To test the service, I setup a script using PHP and communicated with the rssCloud.org service over REST. I first pinged the service with information about my RSS feed. Everything worked well. I could see in the log file at rssCloud.org that my ping had been accepted and changes in my feed were noted (since this was the first ping). I then pinged the rssCloud service a second time. Since my RSS feed hadn’t been updated, the service log reported that the ping was received and the RSS feed was unchanged. Perfect!
I then setup the notification request. I posted the address of the RSS feed and the address to which I’d like to receive notifications. The request worked exactly as advertised and if I’d been using a different server, I could have moved onto the next steps: generating a change and actually receiving the notification. Unfortunately, I had to stop my test run at this point due to the way rssCloud.org verifies the notification address. I’ll explain a little more about the issue in a minute, but it wasn’t a loss at all. I was able to watch the rssCloud log for other people’s notifications and I saw how it would work. It’s a good, simple and clean process.
So back to my issue. Obviously, a desktop application will have trouble with this process because the rssCloud service must be able to contact your machine over the Internet. It’s possible to configure a desktop for this type of contact, but it’s definitely not an easy thing to do using today’s tools. But I pushed my script out to the Internet, so why didn’t it work? My problem stems from the use of a shared webhost to run my PHP script. rssCloud.org will only send a notification back to the IP address from which the request originated. Especially in a shared webhost environment, multiple domains can share the same IP address, or outbound requests may be made on a different IP address than inbound requests.
On a server where I have complete control, I could get around this issue, and if I have more time, I’ll move my script to one of my other servers. Still, the way I was thinking about using rssCloud, it would be nice if it worked with this configuration too. I think the issue can be easily solved by allowing the pleaseNotify request to include a domain. Perhaps a shared secret can be used to verify the origination of the request.
My ultimate goal was to build a simple aggregator. I didn’t make it to that step, but it was an interesting first run.
I need to invest more time into studying how these services scale. There are some bits of knowledge that I’m missing when it comes to the current breed of real-time messaging systems. This is a good thing. There’s always more to learn and there are always more experiments to run.
And to Dave Winer, thanks for rssCloud.org…Keep on Truckin’.
data-text=”A Walk in the rssCloud.org (Shannon Whitley)”