Commit 046c42cdc5e109096e58d9324eb8f82539ac375b
1 parent
ea98170288
Exists in
master
ping
Showing 1 changed file with 17 additions and 0 deletions Inline Diff
transport-xmpp.js
1 | "use strict"; | 1 | "use strict"; |
2 | 2 | ||
3 | const bot = require("simple-xmpp"); | 3 | const bot = require("simple-xmpp"); |
4 | const config = require('komodo-sdk/config') | 4 | const config = require('komodo-sdk/config') |
5 | const logger = require('komodo-sdk/logger'); | 5 | const logger = require('komodo-sdk/logger'); |
6 | 6 | ||
7 | let _callback; | 7 | let _callback; |
8 | let _isReady = false; | 8 | let _isReady = false; |
9 | 9 | ||
10 | bot.on('online', function(data) { | 10 | bot.on('online', function(data) { |
11 | logger.info('XMPP transport connected, JID: ' + data.jid.user); | 11 | logger.info('XMPP transport connected, JID: ' + data.jid.user); |
12 | bot.getRoster(); | 12 | bot.getRoster(); |
13 | 13 | ||
14 | setTimeout( | 14 | setTimeout( |
15 | function() { | 15 | function() { |
16 | _isReady = true; | 16 | _isReady = true; |
17 | 17 | ||
18 | logger.verbose('Transport is ready'); | 18 | logger.verbose('Transport is ready'); |
19 | 19 | ||
20 | if (_callback && _callback.onOnline) { | 20 | if (_callback && _callback.onOnline) { |
21 | _callback.onOnline({ | 21 | _callback.onOnline({ |
22 | me: config.username, | 22 | me: config.username, |
23 | }); | 23 | }); |
24 | }; | 24 | }; |
25 | }, | 25 | }, |
26 | 26 | ||
27 | config.warming_up_ms || (30 * 1000) | 27 | config.warming_up_ms || (30 * 1000) |
28 | ) | 28 | ) |
29 | }); | 29 | }); |
30 | 30 | ||
31 | bot.on('chat', function(partner, msg) { | 31 | bot.on('chat', function(partner, msg) { |
32 | if (!msg || !msg.trim()) { | 32 | if (!msg || !msg.trim()) { |
33 | return; | 33 | return; |
34 | } | 34 | } |
35 | 35 | ||
36 | if (partner == config.username.replace(/\/.*$/, '')) { | ||
37 | return; | ||
38 | } | ||
39 | |||
36 | if (!_isReady) { | 40 | if (!_isReady) { |
37 | logger.warn('Warming up is not finished yet, ignoring message', {me: config.username, partner: partner, msg: msg}); | 41 | logger.warn('Warming up is not finished yet, ignoring message', {me: config.username, partner: partner, msg: msg}); |
38 | return; | 42 | return; |
39 | } | 43 | } |
40 | 44 | ||
41 | logger.info('Incoming message via XMPP transport', {me: config.username, partner: partner, msg: msg}); | 45 | logger.info('Incoming message via XMPP transport', {me: config.username, partner: partner, msg: msg}); |
42 | 46 | ||
43 | if (_callback && _callback.onIncomingMessage) { | 47 | if (_callback && _callback.onIncomingMessage) { |
44 | _callback.onIncomingMessage({ | 48 | _callback.onIncomingMessage({ |
45 | me: config.username, | 49 | me: config.username, |
46 | partner: partner, | 50 | partner: partner, |
47 | msg: msg.trim() | 51 | msg: msg.trim() |
48 | }) | 52 | }) |
49 | } | 53 | } |
50 | }) | 54 | }) |
51 | 55 | ||
52 | bot.on('error', function(err) { | 56 | bot.on('error', function(err) { |
53 | logger.warn('Error on XMPP transport', {err: err}) | 57 | logger.warn('Error on XMPP transport', {err: err}) |
58 | setTimeout( | ||
59 | function() { | ||
60 | process.exit(2); | ||
61 | }, | ||
62 | 2000 | ||
63 | ) | ||
54 | }) | 64 | }) |
55 | 65 | ||
56 | bot.on('subscribe', function(from) { | 66 | bot.on('subscribe', function(from) { |
57 | logger.verbose('Incoming subscribe request from ' + from); | 67 | logger.verbose('Incoming subscribe request from ' + from); |
58 | bot.acceptSubscription(from); | 68 | bot.acceptSubscription(from); |
59 | bot.subscribe(from); | 69 | bot.subscribe(from); |
60 | }) | 70 | }) |
61 | 71 | ||
62 | function init(cb) { | 72 | function init(cb) { |
63 | if (!cb) { | 73 | if (!cb) { |
64 | logger.warn('Callback is not defined'); | 74 | logger.warn('Callback is not defined'); |
65 | console.trace(); | 75 | console.trace(); |
66 | process.exit(1); | 76 | process.exit(1); |
67 | return; | 77 | return; |
68 | } | 78 | } |
69 | 79 | ||
70 | _callback = cb; | 80 | _callback = cb; |
71 | 81 | ||
72 | bot.connect({ | 82 | bot.connect({ |
73 | jid: config.username, | 83 | jid: config.username, |
74 | password: config.password | 84 | password: config.password |
75 | }); | 85 | }); |
76 | } | 86 | } |
77 | 87 | ||
78 | function send(partner, msg) { | 88 | function send(partner, msg) { |
79 | logger.verbose('Sending message via XMPP transport', {transport: 'xmpp', me: config.username, partner: partner, msg: msg}); | 89 | logger.verbose('Sending message via XMPP transport', {transport: 'xmpp', me: config.username, partner: partner, msg: msg}); |
80 | bot.send(partner, msg); | 90 | bot.send(partner, msg); |
81 | } | 91 | } |
82 | 92 | ||
93 | setInterval( | ||
94 | function() { | ||
95 | bot.send(config.username, 'PING!'); | ||
96 | }, | ||
97 | 60 * 1000 | ||
98 | ) | ||
99 | |||
83 | exports.init = init; | 100 | exports.init = init; |
84 | exports.send = send; | 101 | exports.send = send; |
85 | 102 |