Class: DACPClient::Bonjour

Inherits:
Object
  • Object
show all
Defined in:
lib/dacpclient/bonjour.rb

Overview

The Client class handles communication with the server

Constant Summary collapse

SERVICE_NAME =
'_daap._tcp'.freeze
DOMAIN =
'local'.freeze

Instance Method Summary collapse

Instance Method Details

#browseObject



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
# File 'lib/dacpclient/bonjour.rb', line 7

def browse
  servers = []

  begin
    timeout(3) do
      DNSSD.browse!(SERVICE_NAME, DOMAIN) do |node|
        ip, port = nil

        resolver = DNSSD::Service.new
        resolver.resolve(node) do |resolved|
          ip = get_ip(resolved.target)
          port = resolved.port

          break unless resolved.flags.more_coming?
        end

        servers << { name: node.name, ip: ip, port: port, node: node }

        break unless node.flags.more_coming?
      end
    end

  rescue Timeout::Error
    return []
  end

  servers
end