func (dc *DiscoveryClient) Register(domain string) { rand.Seed(time.Now().UTC().UnixNano()) dnssdServiceName := fmt.Sprintf("%s[%d]", dc.serviceType, rand.Int()) s := &mdns.MDNSService{ Instance: dnssdServiceName, Service: "_ws._tcp", Domain: domain, Port: dc.Port, Info: fmt.Sprintf("path=/broadcast/%s", dc.serviceType), } if err := s.Init(); err != nil { log.Fatalf("err: %v", err) } serv, err := mdns.NewServer(&mdns.Config{Zone: s}) if err != nil { log.Fatalf("err: %v", err) } dc.server = serv advertisedServiceNames[dnssdServiceName] = true log.Printf("Broadcast websocket advertised as '%s' in %s network", fmt.Sprintf("%s._ws._tcp", dnssdServiceName), domain) }
func (dc *DiscoveryService) Register(domain string) { dnssdServiceId := GenerateId() s := &mdns.MDNSService{ Instance: dnssdServiceId, Service: "_nws._tcp", Domain: domain, Port: dc.Port, Info: fmt.Sprintf("hash=%s,path=%s", dc.Hash, dc.Path), } if err := s.Init(); err != nil { log.Printf("Could not register service on network. %v", err) return } var mdnsClientConfig *mdns.Config // Advertise service to the correct endpoint (local or network) mdnsClientConfig = &mdns.Config{ IPv4Addr: network_ipv4Addr, IPv6Addr: network_ipv6Addr, } // Add the DNS zone record to advertise mdnsClientConfig.Zone = s serv, err := mdns.NewServer(mdnsClientConfig) if err != nil { log.Printf("Failed to create new mDNS server. %v", err) return } dc.server = serv log.Printf("New '%s' channel advertised as '%s' in %s network", dc.Name, fmt.Sprintf("%s._nws._tcp", dnssdServiceId), domain) }