[jdev] JDev Digest, Vol 72, Issue 14
Karsten J
jeskar at web.de
Wed Jan 27 13:32:51 CST 2010
> Hi Karsten,
>
> Karsten J wrote:
>> Hello,
>>
>> I am studying at a University in Germany. We started a little project
>> which tracks the location of people, connects them and helps them to
>> interact on different levels. Well, in the end it will.
>>
>> We decided to use XMPP as our protocol and as it turns out there is
>> almost always an XEP which covers something we want to do. I really
>> start liking it.
>>
>> Since we don't have the capacity to write our own server we decide to
>> use an existing one and enhance its features with an external
>> component. However, I kinda ran into a problem and I hope you can help
>> me out. In the XEP-0114 it says that an external component can do
>> things that clients cannot. I tried to find a list of those things but
>> till now I wasn't lucky.
>
> I've ran into a similar use case myself. External components don't
> have that kind of access. An external component basically registers
> itself as component.domain.com, and can send and receive messages
> from/to all JIDs at that domain (i.e. user1 at component.domain.com,
> user2 at component.domain.com, component.domain.com, etc.). But the xmpp
> server will not route stanzas that are not addressed to the component to
> it, nor will the server allow the component to send stanzas addressed
> from other domains.
>
>> There is one special thing my component needs
>> to be able to do. I would like my component to listen to buddy
>> requests and "buddy acceptances" of clients which are received by the
>> server. As far as I know an internal component or something like a
>> packet interceptor as a plug in which sends the packets on to my
>> component could do that. However, before I start writing a plug in for
>> a specific server implementation I would like to know if there is a
>> way within the specifications of the protocol.
>>
>
> We wrote a plugin for openfire that just forwards stanzas down an XML
> pipe over TCP, and use an external (non-XMPP) service to filter out the
> stanzas we are interested in using xpath expressions (this was really
> easy with twisted words/wokkel).
>
> Alternatively, you can implement the logic completely inside your plugin.
>
> I don't think you'll be able to pass stanzas from a plugin or internal
> component to an external component directly, the component protocol
> doesn't support that. If you really want to use an external XMPP
> component, I can only think of wrapping your original stanza in another
> stanza addressed to the component.
>
> Good luck,
> Ilya
Thx a lot for your advice. We decide to send extra messages to the
component once the buddy request was accepted. This is not an ideal
solution Hwever your implementation is "just" a proof of concept right
now.
best wishes,
Karsten Jeschkies
More information about the JDev
mailing list