1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- Subscription flow
- =================
- Happy flow
- ----------
- Contact1 makes a presence subscription request to contact2.
- ::
- <presence type="subscribe" to="contact2@localhost"/>
- Contact1 receives a roster update
- ::
- <iq type="set" to="contact1@localhost">
- <query xmlns="jabber:iq:roster">
- <item jid="contact2@localhost" ask="subscribe" subscription="none"></item>
- </query>
- </iq>
- Contact2 receives the presence subscription, but no
- roster update. We create a roster item manually in
- handleIncomingSubscription and add the 'requesting'
- property to indicate that this is an incoming request.
- Contact2 clicks "Accept". This confirms the
- subscription and subscribes back.
- ::
- <presence type="subscribed" to="contact1@localhost"/>
- <presence type="subscribe" to="contact1@localhost"/>
- IF Contact1 is still online and likewise subscribes back, Contact2 will receive a roster update
- ::
- <iq type="set" to="contact2@localhost">
- <query xmlns="jabber:iq:roster">
- <item jid="contact1@localhost" ask="subscribe" subscription="from"></item>
- </query>
- </iq>
- ELSE, Contact 2 will receive a roster update (but not an IQ stanza)
- ::
- ask = null
- subscription = "from"
- Contact1's converse.js client will automatically
- approve.
- Contact2 receives a roster update (as does contact1).
- ::
- <iq type="set" to="contact2@localhost">
- <query xmlns="jabber:iq:roster">
- <item jid="contact1@localhost" subscription="both"></item>
- </query>
- </iq>
|