Using DJabberd as a platform for external components
Martin Atkins
mart at degeneration.co.uk
Fri Dec 22 01:29:29 UTC 2006
Pedro Melo wrote:
> Hi,
>
> currently at SAPO we use POE to write our custom external components.
> Unfortunately, some of our components are becoming CPU bound, so we went
> looking for a new solution. DJabberd stands out as a prime candidate, of
> course.
>
Hi Pedro,
Your plans inspired me to make a module that allows a DJabberd VHost to
act as a component and connect to another JEP0114-capable server.
In the core trunk now is a module called
DJabberd::Delivery::ComponentConnection. If you create your custom
component as a subclass of DJabberd::Component, you should then be able
to make use of it like this:
<VHost component.example.com>
<Plugin DJabberd::Delivery::ComponentConnection>
RemoteAddr 123.213.132.121:21231
Secret password
</Plugin>
<Plugin YourNamespace::Jabber::SomeComponent>
# ... parameters ...
</Plugin>
</VHost>
When DJabberd starts up with the above configuration it will attempt to
connect to the address nominated in RemoteAddr using the JEP-0114
"accept" protocol and, if it succeeds, it'll route outgoing messages
from your component to the remote server and vice-versa.
I've not tested this very much; in my tests, I had it connecting to my
own ::Component::External server implementation in a second DJabberd
instance, so it might not work as well against other people's server
implementations. I hope you'll give feedback and possibly some patches
to fix it in these cases.
All the best,
Martin
More information about the Djabberd
mailing list