Other Differences Between Client and Component Programming
There are many differences between programming a component and programming a client. We’re already aware of many of the major ones, described earlier in Section 9.3.1.1. There are, however, also more subtle differences that we need to bear in mind.
Components, unlike clients, do not connect to the JSM. They
connect as a peer of the JSM. This means not only that
they cannot partake of IM features made available by JSM’s modules (see
Section 4.4.4 for a list of these modules)
but also that they must do more for themselves.
This isn’t as bad as it seems. Take store and forward, for example,
a feature provided by the JSM’s mod_offline module. While
a message sent to a component won’t be stored and forwarded if that
component is not connected, a message sent from a component to a client
will get stored and forwarded if the client is
offline, because the message will be routed to the JSM (as specified by the
[
hostname
] in the address), which can decide what
action to take. Messages can be passed directly to the client if the user is online or can be stored and forwarded later when they’re back online.
When constructing an element as
a client, we should not specify a from attribute before
it is sent; this is added by the JSM as it arrives to prevent
JID spoofing. If a component does not connect through the JSM, no
“from-stamping” takes place; the component itself must stamp the element
with a from attribute.
The addressing ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access