Will use XEP-0199 ping for keep-alive only if it is supported by the server.

This commit is contained in:
paweldomas 2015-08-28 11:25:42 +02:00
parent 8a22060aa8
commit 60d0279e08
2 changed files with 31 additions and 1 deletions

View File

@ -53,6 +53,26 @@ module.exports = function (XMPP, eventEmitter) {
this.connection.sendIQ(iq, success, error, timeout);
},
/**
* Checks if given <tt>jid</tt> has XEP-0199 ping support.
* @param jid the JID to be checked for ping support.
* @param callback function with boolean argument which will be
* <tt>true</tt> if XEP-0199 ping is supported by given <tt>jid</tt>
*/
hasPingSupport: function (jid, callback) {
this.connection.disco.info(
jid, null,
function (result) {
var ping = $(result).find('>>feature[var="urn:xmpp:ping"]');
callback(ping.length > 0);
},
function (error) {
console.error("Ping feature discovery error", error);
callback(false);
}
);
},
/**
* Starts to send ping in given interval to specified remote JID.
* This plugin supports only one such task and <tt>stopInterval</tt>

View File

@ -87,7 +87,17 @@ function connect(jid, password) {
console.info("My Jabber ID: " + connection.jid);
connection.ping.startInterval(config.hosts.domain);
// Schedule ping ?
var pingJid = config.hosts.domain;
connection.ping.hasPingSupport(
pingJid,
function (hasPing) {
if (hasPing)
connection.ping.startInterval(pingJid);
else
console.warn("Ping NOT supported by " + pingJid);
}
);
if (password)
authenticatedUser = true;