Commit d44eb7f4c009d6be0239f6817ca7e06012df845a

Authored by Adhidarma Hadiwinoto
1 parent 30f46ade44
Exists in master

Fix killOnIdle.init dieksekusi setelah transport ready

Showing 1 changed file with 4 additions and 4 deletions Inline Diff

1 const MODULE_NAME = 'TRANSPORT'; 1 const MODULE_NAME = 'TRANSPORT';
2 const SLEEP_BEFORE_TERMINATE_ON_ERROR_MS = 5 * 1000; 2 const SLEEP_BEFORE_TERMINATE_ON_ERROR_MS = 5 * 1000;
3 3
4 const bot = require('simple-xmpp'); 4 const bot = require('simple-xmpp');
5 const config = require('komodo-sdk/config'); 5 const config = require('komodo-sdk/config');
6 const logger = require('tektrans-logger'); 6 const logger = require('tektrans-logger');
7 const messagingService = require('komodo-center-messaging-client-lib'); 7 const messagingService = require('komodo-center-messaging-client-lib');
8 const uniqid = require('uniqid'); 8 const uniqid = require('uniqid');
9 9
10 const customPing = require('./custom-ping'); 10 const customPing = require('./custom-ping');
11 const killOnIdle = require('./kill-on-idle'); 11 const killOnIdle = require('./kill-on-idle');
12 12
13 let isReady; 13 let isReady;
14 14
15 bot.on('online', (data) => { 15 bot.on('online', (data) => {
16 logger.info(`XMPP transport connected, JID: ${data.jid.user}`); 16 logger.info(`XMPP transport connected, JID: ${data.jid.user}`);
17 17
18 if (config.custom_ping) { 18 if (config.custom_ping) {
19 customPing.setBot(bot); 19 customPing.setBot(bot);
20 } 20 }
21 21
22 if (!killOnIdle.getDisabled()) {
23 killOnIdle.init();
24 }
25
26 bot.getRoster(); 22 bot.getRoster();
27 23
28 setTimeout( 24 setTimeout(
29 () => { 25 () => {
30 isReady = true; 26 isReady = true;
31 27
32 logger.verbose('Transport is ready'); 28 logger.verbose('Transport is ready');
33 29
34 if (messagingService.onOnline) { 30 if (messagingService.onOnline) {
35 messagingService.onOnline({ 31 messagingService.onOnline({
36 me: config.username, 32 me: config.username,
37 }); 33 });
38 } 34 }
35
36 if (!killOnIdle.getDisabled()) {
37 killOnIdle.init();
38 }
39 }, 39 },
40 40
41 config.warming_up_ms || (30 * 1000), 41 config.warming_up_ms || (30 * 1000),
42 ); 42 );
43 }); 43 });
44 44
45 bot.on('chat', (partner, msg) => { 45 bot.on('chat', (partner, msg) => {
46 if (!msg || !msg.trim()) { 46 if (!msg || !msg.trim()) {
47 return; 47 return;
48 } 48 }
49 49
50 if (partner === config.username.replace(/\/.*$/, '')) { 50 if (partner === config.username.replace(/\/.*$/, '')) {
51 return; 51 return;
52 } 52 }
53 53
54 killOnIdle.touch(); 54 killOnIdle.touch();
55 55
56 const xid = uniqid(); 56 const xid = uniqid();
57 57
58 if (!isReady) { 58 if (!isReady) {
59 if (!customPing.isPingMessage(msg) && !customPing.isPongMessage(msg)) { 59 if (!customPing.isPingMessage(msg) && !customPing.isPongMessage(msg)) {
60 logger.warn('Warming up is not finished yet, ignoring message', { 60 logger.warn('Warming up is not finished yet, ignoring message', {
61 xid, me: config.username, partner, msg, 61 xid, me: config.username, partner, msg,
62 }); 62 });
63 } 63 }
64 return; 64 return;
65 } 65 }
66 66
67 if (customPing.isPongMessage(msg)) { 67 if (customPing.isPongMessage(msg)) {
68 if (config.custom_ping && config.custom_ping.verbose) { 68 if (config.custom_ping && config.custom_ping.verbose) {
69 logger.verbose(`${MODULE_NAME} 70CDD087: Got PONG message`, { 69 logger.verbose(`${MODULE_NAME} 70CDD087: Got PONG message`, {
70 xid, 70 xid,
71 partner, 71 partner,
72 msg, 72 msg,
73 }); 73 });
74 } 74 }
75 return; 75 return;
76 } 76 }
77 77
78 if (customPing.isPingMessage(msg)) { 78 if (customPing.isPingMessage(msg)) {
79 if (customPing.isAllowedPartner(partner)) { 79 if (customPing.isAllowedPartner(partner)) {
80 if (config.custom_ping && config.custom_ping.verbose) { 80 if (config.custom_ping && config.custom_ping.verbose) {
81 logger.verbose(`${MODULE_NAME} ED8C8786: Processing PING message`, { 81 logger.verbose(`${MODULE_NAME} ED8C8786: Processing PING message`, {
82 xid, 82 xid,
83 partner, 83 partner,
84 msg, 84 msg,
85 }); 85 });
86 } 86 }
87 87
88 customPing.sendPong(xid, partner, msg); 88 customPing.sendPong(xid, partner, msg);
89 } 89 }
90 return; 90 return;
91 } 91 }
92 92
93 logger.info('Incoming message via XMPP transport', { 93 logger.info('Incoming message via XMPP transport', {
94 xid, me: config.username, partner, msg, 94 xid, me: config.username, partner, msg,
95 }); 95 });
96 96
97 if (messagingService && messagingService.onIncomingMessage) { 97 if (messagingService && messagingService.onIncomingMessage) {
98 messagingService.onIncomingMessage( 98 messagingService.onIncomingMessage(
99 { 99 {
100 me: config.username, 100 me: config.username,
101 partner, 101 partner,
102 msg: msg.trim(), 102 msg: msg.trim(),
103 xid, 103 xid,
104 }, 104 },
105 ); 105 );
106 } 106 }
107 }); 107 });
108 108
109 bot.on('error', (err) => { 109 bot.on('error', (err) => {
110 const xid = uniqid(); 110 const xid = uniqid();
111 111
112 logger.warn(`${MODULE_NAME} F2E53C12: Error detected.`, { 112 logger.warn(`${MODULE_NAME} F2E53C12: Error detected.`, {
113 xid, 113 xid,
114 eCode: err.code, 114 eCode: err.code,
115 eMessage: err.message, 115 eMessage: err.message,
116 }); 116 });
117 117
118 if (!config.do_not_terminate_on_error) { 118 if (!config.do_not_terminate_on_error) {
119 logger.warn(`${MODULE_NAME} BA6C0C55: Terminating on error`, { 119 logger.warn(`${MODULE_NAME} BA6C0C55: Terminating on error`, {
120 xid, 120 xid,
121 millisecondSleepBeforeTerminate: SLEEP_BEFORE_TERMINATE_ON_ERROR_MS, 121 millisecondSleepBeforeTerminate: SLEEP_BEFORE_TERMINATE_ON_ERROR_MS,
122 }); 122 });
123 123
124 setTimeout(() => { 124 setTimeout(() => {
125 process.exit(1); 125 process.exit(1);
126 }, SLEEP_BEFORE_TERMINATE_ON_ERROR_MS); 126 }, SLEEP_BEFORE_TERMINATE_ON_ERROR_MS);
127 } 127 }
128 }); 128 });
129 129
130 function send(partner, msg) { 130 function send(partner, msg) {
131 logger.verbose('Sending message via XMPP transport', { 131 logger.verbose('Sending message via XMPP transport', {
132 transport: 'xmpp', me: config.username, partner, msg, 132 transport: 'xmpp', me: config.username, partner, msg,
133 }); 133 });
134 bot.send(partner, msg); 134 bot.send(partner, msg);
135 } 135 }
136 136
137 bot.on('subscribe', (from) => { 137 bot.on('subscribe', (from) => {
138 logger.verbose(`Incoming subscribe request from ${from}`); 138 logger.verbose(`Incoming subscribe request from ${from}`);
139 bot.acceptSubscription(from); 139 bot.acceptSubscription(from);
140 bot.subscribe(from); 140 bot.subscribe(from);
141 }); 141 });
142 142
143 function ping() { 143 function ping() {
144 if (isReady) bot.send(config.username, 'PING!'); 144 if (isReady) bot.send(config.username, 'PING!');
145 } 145 }
146 146
147 function init() { 147 function init() {
148 messagingService.setTransport(exports); 148 messagingService.setTransport(exports);
149 149
150 bot.connect({ 150 bot.connect({
151 jid: config.username, 151 jid: config.username,
152 password: config.password, 152 password: config.password,
153 host: config.xmpp_host, 153 host: config.xmpp_host,
154 }); 154 });
155 155
156 setInterval( 156 setInterval(
157 ping, 157 ping,
158 config.ping_interval_ms || 60000, 158 config.ping_interval_ms || 60000,
159 ); 159 );
160 } 160 }
161 161
162 init(); 162 init();