sonos
Version:
Node.js Sonos Interface
37 lines (32 loc) • 974 B
JavaScript
const DeviceDiscovery = require('./deviceDiscovery')
class AsyncDeviceDiscovery {
async discover (options = { timeout: 5000 }) {
return new Promise((resolve, reject) => {
const discovery = DeviceDiscovery(options)
discovery.once('DeviceAvailable', (device, model) => {
discovery.destroy()
resolve(device, model)
})
discovery.once('timeout', () => {
reject(new Error('No device found'))
})
})
}
async discoverMultiple (options = { timeout: 5000 }) {
return new Promise((resolve, reject) => {
const discovery = DeviceDiscovery(options)
const devices = []
discovery.on('DeviceAvailable', (device, model) => {
devices.push(device)
})
discovery.once('timeout', () => {
if (devices.length > 0) {
resolve(devices)
} else {
reject(new Error('No devices found'))
}
})
})
}
}
module.exports = AsyncDeviceDiscovery