[Standards] XEP-0073: Question about service discovery

Remko Tronçon remko at el-tramo.be
Wed Feb 7 12:53:43 UTC 2007

> So even if clients implement XEP-0115 they still have to send out
> (without caching) jabber:iq:version and the disco request
> when someone goes online.

XEP-0115 should avoid all disco requests to contacts. All information
needed in a user interface (disabling specific actions for contacts)
and protocols (whether or not to send chat state notification) should
be present in the discovered (and cached) disco requests. Things like
'jabber:iq:version' are specific requests, and should only be done on
demand by the user; a client has no real use for this information. The
same goes for disco#info
Clients used to do jabber:iq:version requests to display which client
a contact is using in their UI. This of course causes floods of iq
requests when you sign on, which is bad. This is no longer necessary
with capabilities, since you can derive this from the caps node in the
presence, and the client name in the cached disco#info request. The
only thing you don't get from capabilities is a version number and
operating system; for this you need to do an explicit
jabber:iq:version request.

For servers, XEP-0115 indeed does not apply. However, the extra
overhead of disco-ing your server once on startup is limited, so it's
acceptable to just disco your server when connecting.

> It is still unclear when to send simple discovery requests (<query
> xmlns='http://jabber.org/protocol/disco#info'/>).

Upon startup to your server, and  when you get presence from a contact
that has a capability node or extension you haven't encountered yet.


More information about the Standards mailing list