diff --git a/modules/xmpp/strophe.ping.js b/modules/xmpp/strophe.ping.js
index b11f65119..1ac534595 100644
--- a/modules/xmpp/strophe.ping.js
+++ b/modules/xmpp/strophe.ping.js
@@ -53,6 +53,26 @@ module.exports = function (XMPP, eventEmitter) {
this.connection.sendIQ(iq, success, error, timeout);
},
+ /**
+ * Checks if given jid has XEP-0199 ping support.
+ * @param jid the JID to be checked for ping support.
+ * @param callback function with boolean argument which will be
+ * true if XEP-0199 ping is supported by given jid
+ */
+ 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 stopInterval
diff --git a/modules/xmpp/xmpp.js b/modules/xmpp/xmpp.js
index 4afd060c7..3dc9fb077 100644
--- a/modules/xmpp/xmpp.js
+++ b/modules/xmpp/xmpp.js
@@ -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;