mirror of
				https://github.com/node-red/node-red-nodes.git
				synced 2025-03-01 10:37:43 +00:00 
			
		
		
		
	tidy up xmpp node slightly
handle errors better, more consistent status indicators
This commit is contained in:
		| @@ -55,7 +55,7 @@ module.exports = function(RED) { | ||||
|  | ||||
|         var xmpp = new XMPP.SimpleXMPP(); | ||||
|  | ||||
|         xmpp.on('online', function() { | ||||
|         xmpp.on('online', function(data) { | ||||
|             node.log('connected to '+node.host+":"+node.port); | ||||
|             node.status({fill:"green",shape:"dot",text:"connected"}); | ||||
|             //xmpp.setPresence('online', node.nick+' online'); | ||||
| @@ -87,12 +87,21 @@ module.exports = function(RED) { | ||||
|         }); | ||||
|  | ||||
|         xmpp.on('error', function(err) { | ||||
|             console.error("error",err); | ||||
|             if (RED.settings.verbose) { node.log(err); } | ||||
|             if (err.hasOwnProperty("stanza")) { | ||||
|                 if (err.stanza.name === 'stream:error') { node.error("stream:error - bad login id/pwd ?",err); } | ||||
|                 else { node.error(err.stanza.name,err); } | ||||
|             } | ||||
|             else { | ||||
|                 if (err.errno === "ETIMEDOUT") { node.error("Timeout connecting to server",err); } | ||||
|                 else { node.error(err.errno,err); } | ||||
|             } | ||||
|             node.status({fill:"red",shape:"ring",text:"error"}); | ||||
|         }); | ||||
|  | ||||
|         xmpp.on('close', function() { | ||||
|             node.log('connection closed'); | ||||
|             node.status({fill:"red",shape:"ring",text:"not connected"}); | ||||
|             //node.status({fill:"grey",shape:"ring",text:"not connected"}); | ||||
|         }); | ||||
|  | ||||
|         xmpp.on('subscribe', function(from) { | ||||
| @@ -101,6 +110,7 @@ module.exports = function(RED) { | ||||
|  | ||||
|         // Now actually make the connection | ||||
|         try { | ||||
|             node.status({fill:"grey",shape:"dot",text:"connecting"}); | ||||
|             xmpp.connect({ | ||||
|                 jid : node.userid, | ||||
|                 password : node.password, | ||||
| @@ -119,6 +129,7 @@ module.exports = function(RED) { | ||||
|             xmpp.disconnect(); | ||||
|             if (xmpp.conn) { xmpp.conn.end(); } | ||||
|             xmpp = null; | ||||
|             node.status({}); | ||||
|             done(); | ||||
|         }); | ||||
|     } | ||||
| @@ -142,9 +153,9 @@ module.exports = function(RED) { | ||||
|  | ||||
|         var xmpp = new XMPP.SimpleXMPP(); | ||||
|  | ||||
|         xmpp.on('online', function() { | ||||
|             node.log('connected to '+node.host+":"+node.port); | ||||
|         xmpp.on('online', function(data) { | ||||
|             node.status({fill:"green",shape:"dot",text:"connected"}); | ||||
|             node.log('connected to '+node.host+":"+node.port); | ||||
|             xmpp.setPresence('online', node.nick+' online'); | ||||
|             if (node.join) { | ||||
|                 xmpp.join(node.to+'/'+node.nick); | ||||
| @@ -152,12 +163,13 @@ module.exports = function(RED) { | ||||
|         }); | ||||
|  | ||||
|         xmpp.on('error', function(err) { | ||||
|             console.error("error",err); | ||||
|             node.error(err.stanza.name,err); | ||||
|             node.status({fill:"red",shape:"ring",text:"error"}); | ||||
|         }); | ||||
|  | ||||
|         xmpp.on('close', function() { | ||||
|             node.log('connection closed'); | ||||
|             node.status({fill:"red",shape:"ring",text:"not connected"}); | ||||
|             //node.status({fill:"grey",shape:"ring",text:"not connected"}); | ||||
|         }); | ||||
|  | ||||
|         xmpp.on('subscribe', function(from) { | ||||
| @@ -166,6 +178,7 @@ module.exports = function(RED) { | ||||
|  | ||||
|         // Now actually make the connection | ||||
|         try { | ||||
|             node.status({fill:"grey",shape:"dot",text:"connecting"}); | ||||
|             xmpp.connect({ | ||||
|                 jid : node.userid, | ||||
|                 password : node.password, | ||||
| @@ -202,11 +215,13 @@ module.exports = function(RED) { | ||||
|             } | ||||
|         }); | ||||
|  | ||||
|         node.on("close", function() { | ||||
|         node.on("close", function(done) { | ||||
|             xmpp.setPresence('offline'); | ||||
|             xmpp.disconnect(); | ||||
|             if (xmpp.conn) { xmpp.conn.end(); } | ||||
|             xmpp = null; | ||||
|             node.status({}); | ||||
|             done(); | ||||
|         }); | ||||
|     } | ||||
|     RED.nodes.registerType("xmpp out",XmppOutNode); | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "name"          : "node-red-node-xmpp", | ||||
|     "version"       : "0.1.0", | ||||
|     "version"       : "0.1.1", | ||||
|     "description"   : "A Node-RED node to talk to an XMPP server", | ||||
|     "dependencies"  : { | ||||
|         "simple-xmpp"   : "1.3.*" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user