dorita980-node18 – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | 'use strict'; |
2 | |||
3 | const dgram = require('dgram'); |
||
4 | |||
5 | function discovery (cb, full) { |
||
6 | const server = dgram.createSocket('udp4'); |
||
7 | |||
8 | server.on('error', (err) => { |
||
9 | server.close(); |
||
10 | cb(err); |
||
11 | }); |
||
12 | |||
13 | server.on('message', (msg) => { |
||
14 | try { |
||
15 | let parsedMsg = JSON.parse(msg); |
||
16 | if (parsedMsg.hostname && parsedMsg.ip && ((parsedMsg.hostname.split('-')[0] === 'Roomba') || (parsedMsg.hostname.split('-')[0] === 'iRobot'))) { |
||
17 | server.close(); |
||
18 | console.log('Robot found! with blid/username: ' + parsedMsg.hostname.split('-')[1]); |
||
19 | console.log(parsedMsg); |
||
20 | cb(null, full ? parsedMsg : parsedMsg.ip); |
||
21 | } |
||
22 | } catch (e) {} |
||
23 | }); |
||
24 | |||
25 | server.on('listening', () => { |
||
26 | console.log('Looking for robots...'); |
||
27 | }); |
||
28 | |||
29 | server.bind(5678, function () { |
||
30 | const message = new Buffer('irobotmcs'); |
||
31 | server.setBroadcast(true); |
||
32 | server.send(message, 0, message.length, 5678, '255.255.255.255'); |
||
33 | }); |
||
34 | } |
||
35 | |||
36 | function getRobotPublicInfo (ip, cb) { |
||
37 | const server = dgram.createSocket('udp4'); |
||
38 | |||
39 | server.on('error', (err) => { |
||
40 | server.close(); |
||
41 | cb(err); |
||
42 | }); |
||
43 | |||
44 | server.on('message', (msg) => { |
||
45 | try { |
||
46 | let parsedMsg = JSON.parse(msg); |
||
47 | if (parsedMsg.hostname && parsedMsg.ip && ((parsedMsg.hostname.split('-')[0] === 'Roomba') || (parsedMsg.hostname.split('-')[0] === 'iRobot'))) { |
||
48 | server.close(); |
||
49 | parsedMsg.blid = parsedMsg.hostname.split('-')[1]; |
||
50 | cb(null, parsedMsg); |
||
51 | } |
||
52 | } catch (e) {} |
||
53 | }); |
||
54 | |||
55 | server.bind(5678, function () { |
||
56 | const message = new Buffer('irobotmcs'); |
||
57 | server.send(message, 0, message.length, 5678, ip); |
||
58 | }); |
||
59 | } |
||
60 | module.exports = { |
||
61 | discovery, |
||
62 | getRobotPublicInfo |
||
63 | }; |