diff --git a/index.js b/index.js
index 8617ea1..a150537 100644
--- a/index.js
+++ b/index.js
@@ -34,6 +34,19 @@ var logger = new (winston.Logger)({
   ]
 });
 
+
+function xmppConnect() {
+    logger.info('Connecting to XMPP server');
+    
+    xmpp.connect({
+            jid: config.globals.jid,
+            password: config.globals.password,
+    });
+
+    // check for incoming subscription requests
+    xmpp.getRoster();
+}
+
 function onHttpIncomingMessage(request, response) {
     var qs = url.parse(request.url, true).query;
     logger.info("onHttpIncomingMessage()", {qs: qs});
@@ -86,6 +99,11 @@ function reportToEvo(from, message) {
     
 }
 
+xmpp.on('close', function() {
+    logger.warn('XMPP disconnected');
+    setTimeout(xmppConnect, 10 * 1000);
+});
+
 xmpp.on('online', function(data) {
     logger.info('XMPP online', {data: data});
     logger.info('Connected with JID: ' + data.jid.user);
@@ -121,12 +139,5 @@ xmpp.on('subscribe', function(from) {
     xmpp.acceptSubscription(from);
 });
 
-xmpp.connect({
-        jid: config.globals.jid,
-        password: config.globals.password,
-});
-
-// check for incoming subscription requests
-xmpp.getRoster();
-
 createHttpListener();
+xmppConnect();