-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbonjour.js
52 lines (43 loc) · 1.4 KB
/
bonjour.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const bonjour = require('bonjour');
const {performance} = require('perf_hooks');
const G3ServiceType = 'tobii-g3api';
let browsInterval;
class BonjourDiscoveryServer {
startedBrowsingTime;
bonjourBrowser;
start = () => {
console.log('Starting Discovery Service....');
this._setupBonjour();
browsInterval = setInterval(() => {
this._teardownBonjour();
this._setupBonjour();
}, 10000);
}
_setupBonjour = () => {
console.log('Starting Bonjour Browser');
this.startedBrowsingTime = performance.now();
let bonjourInstance = bonjour();
this.bonjourBrowser = bonjourInstance.find(
{
type: G3ServiceType
},
(service) => {
console.log(`Bonjour -- Found Service after ${Math.floor(performance.now() - this.startedBrowsingTime)} ms`, service);
});
this.bonjourBrowser.on('down', (service) => {
console.log('Bonjour -- LOST Service:', service);
});
this.bonjourBrowser.on('error', (err) => {
console.error('Error in Bonjour Discovery::', err);
});
}
_teardownBonjour = () => {
if (!this.bonjourBrowser) {
return;
}
this.bonjourBrowser.stop();
this.bonjourBrowser = undefined;
}
}
let discovery = new BonjourDiscoveryServer();
discovery.start();