[Standards] querying for random services
Mridul Muralidharan
mridul at sun.com
Tue May 8 14:01:33 CDT 2007
We do something similar for case of searching for conferences.
You send a query with the filter in an x-data form (used to be in the
node for the disco#items, but some servers were barfing on that) and
response would be a list of disco info's with jid of the item as an
attribute.
Not exactly same, but similar idea.
Regards,
Mridul
Peter Saint-Andre wrote:
> As discussed in the STUN server discovery thread, it would be nice to
> ask your XMPP server which STUN servers it knows about.
>
> But why limit it to STUN? You might also want to ask your XMPP server
> about the pubsub services or bytestreams proxies or Teredo services
> (etc.) it knows about.
>
> Granted you can find this out by sending a disco#items request and
> receiving a list of everything out there, but what if you only want to
> know about STUN servers and nothing else?
>
> Based on discussions in the jdev room and offlist emails, I've been
> thinking about something like this:
>
> <iq type='get' from='bard at shakespeare.lit/globe' to='shakespeare.lit'
> id='gotstun'>
> <query xmlns='http://jabber.org/protocol/disco#items'
>
> node='http://jabber.org/protocol/disco#info?category=server;type=stun'/>
> </iq>
>
> That is, "please send me one disco item for each STUN server you know
> about". (I'm not wedded to that node syntax, but we need something that
> enables you to specify the kinds of entities you want to match.)
>
> Then, using XEP-0030 and XEP-0128, the server replies:
>
> <iq type='result' from='shakespeare.lit' to='bard at shakespeare.lit/globe'
> id='gotstun'>
> <query xmlns='http://jabber.org/protocol/disco#items'>
> <item jid='not-sure-what-the-jid-is!'>
> <x xmlns='jabber:x:data' type='result'>
> <field var='FORM_TYPE' type='hidden'>
> <value>http://www.xmpp.org/extensions/xep-xxxx.html#ns</value>
> </field>
> <field var='host'>
> <value>stun.shakespeare.lit</value>
> </field>
> <field var='port'>
> <value>9999</value>
> </field>
> <field var='username'>
> <value>someusername</value>
> </field>
> <field var='password'>
> <value>somepassword</value>
> </field>
> </x>
> </item>
> </query>
> </iq>
>
> The nice thing is, this gives us a generic approach so that we don't
> have one protocol for finding STUN servers, another for finding Teredo
> services, another for finding pubsub services, etc.
>
> Note that this enables queries only based on identity -- i.e., the
> category and type specified in the following registry:
>
> http://www.xmpp.org/registrar/disco-categories.html
>
> But it's easy enough to add new identities to that registry.
>
> One aspect I'm not sure of is: what does the XMPP server return as the
> JID of a service that is not accessible via XMPP (such as a STUN
> server)? Presumably it would return the JID of the XMPP server itself.
>
> Thoughts?
>
> Peter
>
More information about the Standards
mailing list