[JDEV] Packet "multiplexing" and Jabber parts

markpasc at mindspring.com markpasc at mindspring.com
Tue Mar 20 12:08:02 CST 2001


My design for the client I'm working on (Jackal, a Jabberbeans client)
is turning out to be a simple roster manager and display app, that
"demultiplexes" the Jabber packets it receives to different
modules/plug-ins (such as MessageModule, ConferenceModule,
WhiteboardModule) based on kind and type of packet, the other party's
JID, and the involved namespace(s).

Is that a silly idea, antithetical to and void of Jabberness? It
sounds good from my point of view designing the client (easy addition
of new modules for new/changed protocols, users don't need the modules
they aren't going to use, gracefully ignores unsupported optional
features), but can't really see how it fits in the big Jabber picture.

Is it reasonable for one resource to correspond to multiple browse
types? A Jabberised chess program might log in as
markpasc at jabber.org/chess; other chess programs could discover by a
browse query that markpasc at jabber.org/chess (or /homeChess or
/happyYayFun) supports application/x-chess, and put me in the list of
potential opponents. However, for a modular client, browse types would
be more like the 'Accept' headers of an HTTP client than the
'Content-type' of a server: Jackal logged in as
markpasc at jabber.org/home with normal messaging, JabberChess, and
whiteboard modules would respond with the /home resource for
user/client, application/whiteboard, and application/x-chess. This
isn't covered in the draft Jabber Browsing document, particularly
since it calls browse types "JID-Types". 

Related is my idea of a BeOS application that does a similar thing:
provide Jabber service to other applications through BMessages. This
application, though, is at a higher scope than Jackal, as the
different applications are more analogous to resources than Jackal's
modules. Conceivably this Be application could be a full-fledged
Jabber server with each application a different user, but that seems
excessive since the client applications aren't talking to each other
(they could use normal BMessages for that).

I guess I'm asking if my orders of magnitude make sense: is a browse
type one particular Jabberised task, a resource a particular client
application supporting one or more browse types, a user the one or
more clients used by one person, and a server an aggregation of users
who send Jabber packets to each other, with the set of
intercommunicating servers atop that?




More information about the JDev mailing list