From d653d184f2c9f983544f2b5aada14a8fc1f72136 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Thu, 26 Nov 2020 18:43:20 +0100 Subject: [PATCH] XMPP: re-connect when disconnected closes #1 --- scripts/xmpp-muc-bridge.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/scripts/xmpp-muc-bridge.js b/scripts/xmpp-muc-bridge.js index 95a6951..6c1fd4b 100644 --- a/scripts/xmpp-muc-bridge.js +++ b/scripts/xmpp-muc-bridge.js @@ -4,8 +4,27 @@ const xmpp = require('simple-xmpp'); const hubotRooms = process.env.HUBOT_IRC_ROOMS.split(','); const xmppRooms = process.env.HUBOT_WORMHOLE_XMPP_ROOMS.split(','); +const xmppConfig = { + jid: process.env.HUBOT_WORMHOLE_XMPP_JID, + password: process.env.HUBOT_WORMHOLE_XMPP_PASSWORD, + host: process.env.HUBOT_WORMHOLE_XMPP_HOST, + port: parseInt(process.env.HUBOT_WORMHOLE_XMPP_PORT) +}; + module.exports = function (robot) { + xmpp.on('online', function(data) { + robot.logger.info('XMPP connected with JID: ' + data.jid.toString()); + + xmppRooms.forEach(room => xmpp.join(`${room}/wormholedev`)); + }); + + xmpp.on('close', function() { + robot.logger.info('XMPP connection has been closed. Re-connecting...'); + + xmpp.connect(xmppConfig); + }); + xmpp.on('groupchat', function(conference, from, message, whatevs, meta) { if (meta || (from === 'wormhole')) return; if (!xmppRooms.includes(conference)) return; @@ -16,14 +35,11 @@ module.exports = function (robot) { robot.messageRoom(room, msg); }); - xmpp.connect({ - jid: process.env.HUBOT_WORMHOLE_XMPP_JID, - password: process.env.HUBOT_WORMHOLE_XMPP_PASSWORD, - host: process.env.HUBOT_WORMHOLE_XMPP_HOST, - port: parseInt(process.env.HUBOT_WORMHOLE_XMPP_PORT) + xmpp.on('error', function(err) { + robot.logger.error(err); }); - xmppRooms.forEach(room => xmpp.join(`${room}/wormhole`)); + xmpp.connect(xmppConfig); function messageMUC(res) { const message = res.message;