NAME
SYNOPSIS
VERSION
Version 0.006
DESCRIPTION
Example from RFC3921:
<iq from=
'juliet@example.com/balcony'
id=
'bv1bs71f'
type=
'get'
>
<query xmlns=
'jabber:iq:roster'
/>
</iq>
Response from server:
<iq id=
'bv1bs71f'
to=
'juliet@example.com/chamber'
type=
'result'
>
<query xmlns=
'jabber:iq:roster'
ver=
'ver7'
>
<item jid=
'nurse@example.com'
/>
<item jid=
'romeo@example.net'
/>
</query>
</iq>
IQ start - stash current IQ on stream Query start - set IQ query type to xmlns
Each item is parsed as a roster entry.
A roster request for a user that does not exist will return an error as follows:
<iq id=
'bv1bs71f'
to=
'juliet@example.com/chamber'
type=
'error'
>
<error type=
'auth'
>
<item-not-found
xmlns=
'urn:ietf:params:xml:ns:xmpp-stanzas'
/>
</error>
</iq>
Updates:
An update request is as follows:
<iq from=
'juliet@example.com/balcony'
id=
'rs1'
type=
'set'
>
<query xmlns=
'jabber:iq:roster'
>
<item jid=
'nurse@example.com'
/>
</query>
</iq>
Pass subscription='remove'
as the item attribute to remove rather than adding the contact.
More detailed example:
C: <iq from=
'juliet@example.com/balcony'
id=
'ph1xaz53'
type=
'set'
>
<query xmlns=
'jabber:iq:roster'
>
<item jid=
'nurse@example.com'
name=
'Nurse'
>
<group>Servants</group>
</item>
</query>
</iq>
Server
push
requests can be sent through as follows:
<iq id=
'a78b4q6ha463'
to=
'juliet@example.com/chamber'
type=
'set'
>
<query xmlns=
'jabber:iq:roster'
>
<item jid=
'nurse@example.com'
/>
</query>
</iq>
with the client reponse being an empty result:
<iq from=
'juliet@example.com/balcony'
id=
'a78b4q6ha463'
type=
'result'
/>
Until the client sends the initial roster request, it will not receive any server push information.
Subscribe by sending something like this:
UC: <presence id=
'xk3h1v69'
to=
'juliet@example.com'
type=
'subscribe'
/>
Requesting a new contact will cause the server to
send
out an ask request:
US: <iq id=
'b89c5r7ib574'
to=
'romeo@example.net/foo'
type=
'set'
>
<query xmlns=
'jabber:iq:roster'
>
<item ask=
'subscribe'
jid=
'juliet@example.com'
subscription=
'none'
/>
</query>
</iq>
=head1 METHODS
INHERITED METHODS
- Protocol::XMPP::ElementBase
-
attributes, characters, class_from_element, end_element, new, parent
- Protocol::XMPP::Base
-
debug, dispatch_event, is_authorised, is_loggedin, new_future, next_id, stream, write_text, write_xml
- Mixin::Event::Dispatch
-
add_handler_for_event, clear_event_handlers, event_handlers, invoke_event, subscribe_to_event, unsubscribe_from_event
AUTHOR
Tom Molesworth <cpan@entitymodel.com>
LICENSE
Copyright Tom Molesworth 2010-2014. Licensed under the same terms as Perl itself.