Commit 046c42cdc5e109096e58d9324eb8f82539ac375b

Authored by Adhidarma Hadiwinoto
1 parent ea98170288
Exists in master

ping

Showing 1 changed file with 17 additions and 0 deletions Inline Diff

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