[jdev] XEP-0100 and roster/legacy contact list sync

Pedro Melo melo at co.sapo.pt
Tue Dec 4 05:48:18 CST 2007


On Dec 4, 2007, at 3:14 AM, Massimiliano Mirra wrote:

> Thanks everyone for your insights.  I finally settled on allowing the
> component to perform roster manipulation on its own.  It doesn't
> modify the server-stored roster, rather the server forwards roster
> queries to a transport depending on the domain part of the "jid"
> attribute contained in <item> elements.  For example, when the client
> sends:
>   <iq type='set' to='server.com' id='rost01'>
>     <query xmlns='jabber:iq:roster'>
>       <item jid='foo at transport.server.com'/>
>     </query>
>   <iq>
> Server forwards it to transport.server.com, transport.server.com saves
> it in its roster and, if necessary, changes remote contact list
> accordingly.  Upon roster request, server queries individual
> transports for roster fragments belonging to users, and merges them
> with its reply.
> Obviously this means that 1) roster retrieval is delayed by login to
> remote services, 2) server can only brute-query local transports,
> unless it inspects user's roster and finds the transports via disco
> (my implementation hasn't).  My use case is very ad-hoc and limited,
> so this limitations are acceptable.

You can bypass 1) if your server sends the internal roster ASAP, and  
then forwards the external gateway roster as roster pushes.

Best regards,
HIId: Pedro Melo
SMTP: melo at co.sapo.pt
XMPP: pedro.melo at sapo.pt

More information about the JDev mailing list