[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [JDEV] Status Notifications.



> > I have a quick question. How are all of the jabber users that might have
> > me in their roster be notified when I come online?
>
> I don't have time to answer this in detail, but the way it's currently
> done is what you hit on at the bottom.  Since in Jabber your "roster"
> lives on the server side, when you change status only the people in your
> roster that are also online will recieve your status updates.  Of course,
> this will be completly customizable from within a module :)  

i would recommend against keeping the "roster" on the server side.

for those of you who don't like analysis problems, just believe me.

assuming the "roster" is on the server side, here's the reason:

  1. servers must keep a list of currently logged-in users.
     assuming N users logged at one time, the server must maintain
     N records.
  2. servers maintain a "roster" for each user logged in.
     at worst, each user will have each other user in their roster.
     this means that the total roster list could approach N^2.
     this will be very bad in large installations.

if we can keep memory linear, we'll be in much better shape. higher-order
polynomials are bad.

if we move the storage and maintainance of the rosters to the clients,
we have a maximum of N records on the server and N records on the client.
the records on the client do not add memory, since they are already
necessary.

if we keep the rosters on the clients, this does require that a client
occasionally poll servers to determine the status of roster-members,
but this is only a small bit of traffic, and could be piggy-backed on
some other transmission.

of course, the transmission is more expensive than the other way, but this
seems like a managable tradeoff.

aron
-- 
 aron atkins                                 (atkins@{chrysalis.com,wpi.edu})
 * j a d e d *               <A HREF="http://www.gweep.net/~jaded/">jaded</A>