Authorization request (add to roster) using strophe.js
-
14-11-2019 - |
Question
I use strophe.js library to send and receive XMPP messages in browser. It works fine, but only for users I already have in my contact list - roster.
I need to add someone (whose address I know) to my roster. How can I achieve this using strophe.js? This is important for me since gmail refuses sending messages to people I don't have in my roster. I'd like to get subscription: both, to be able to receive and send messages.
Solution
Send <presence to="friend@example.com" type="subscribe"/>
:
conn.send($pres({ to: "friend@example.com", type: "subscribe" }));
When your friend accepts, they should send a subscribe to you also, which you can handle by setting a Strophe handler for incoming presence with type "subscribe":
function on_subscription_request(stanza)
{
if(stanza.getAttribute("type") == "subscribe" && is_friend(stanza.getAttribute("from")))
{
// Send a 'subscribed' notification back to accept the incoming
// subscription request
conn.send($pres({ to: "friend@example.com", type: "subscribed" }));
}
return true;
}
conn.addHandler(on_subscription_request, null, "presence", "subscribe");
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow