[Plugin Idea] Atom Over XMPP

Greetings!

My name is Schimon and I am a champion of Syndication and XMPP.

For those of you who are not famiiliar, XMPP (previously Jabber) is a messaging system with open standards. XMPP is extensible via XEP.

I will discuss about XEP-0060: Publish-Subscribe.

Almost a couple of decades ago, a discussion arose about incorporating Atom (RFC 4287) with XMPP PubSub, which is really easy because both are XML data.

One of the major benefits of utilizing PubSub is native Push Notifications (yes, that technique was much before HTML5) which do not require HTTP pulling.

That would be a great feature to have Tiny Tiny RSS to utilize XMPP PubSub natively!

See a proof of concept I have made to parse PubSub nodes as Atom Syndication Format.

Cheers,
Schimon

i’m not going to put any effort into completely dead and forgotten instant messaging protocol.

if you want to add support for whatever this is, make a plugin.

Accepted!

I have changed the subforum to Themes and Plugins.

I think XMPP is the best IM protocol to date.
I use XMPP every day.

  • Atom (RFC 4287)
  • XMPP (RFC 6120)
  • PubSub (XEP-0060)

I am not coding in PHP as much as I do with Python and Linux.

I would be grateful for help.

This code might be giving a basic idea of the plugin:

class PubSubPlugin extends Plugin {
    private $xmppServer = 'your_xmpp_server';
    private $xmppUser = 'your_xmpp_user';
    private $xmppPassword = 'your_xmpp_password';
    private $pubsubNode = 'pubsub_node_to_subscribe';

    public function init() {
        $this->subscribeToPubSubNode();
    }

    private function subscribeToPubSubNode() {
        $client = new XMPPClient($this->xmppServer, $this->xmppUser, $this->xmppPassword);
        $client->connect();

        // Subscribe to the PubSub node
        $client->subscribeToNode($this->pubsubNode);

        $items = $client->getItemsFromNode($this->pubsubNode);

        foreach ($items as $item) {
            $article = array(
                'title' => $item['title'],
                'link' => $item['link'],
                'author' => $item['author'],
                'content' => $item['content'],
                'updated' => strtotime($item['updated']),
            );

            // Add the article to the feed
            $this->articles[] = $article;
        }

        $client->disconnect();
    }
}

// Instantiate the plugin
$plugin = new PubSubPlugin();
$plugin->init();

I might also want to use Single Session Support instead of connectind and disconnecting each time this plugin is called.

Here are some references:

how could i miss this

holy guacamole

@wn_name, thank you. I will look into these.

@fox, pardon, I did not understand.