go-dnssd で service register をする
Add Service Registration by dapplebeforedawn · Pull Request #2 · soh335/go-dnssd · GitHub を送ってもらい go-dnssd を使って service register が出来るようになった。ありがたい。
func RegisterService() (*dnssd.Context, error) { txtRecords := map[string]string{ "path": "/path-to-page.html", } rc := make(chan *dnssd.RegisterReply) ctx, err := dnssd.ServiceRegister( dnssd.DNSServiceFlagsSuppressUnusable, 0, // most applications will pass 0 "My Server", "_http._tcp.", "", // empty string ends up as local domain "", // most applications do not specify a host 3000, // port the service is running on txtRecords, rc, ) go dnssd.Process(ctx) if err != nil { return nil, err } registerReply, _ := <-rc fmt.Println("Register Reply: ", registerReply) return ctx, nil }
context を release すると service register が cancel になるので不必要になるタイミングをとりやすい箇所で defer ctx.Release()
とすると良さそう。
https://github.com/soh335/go-dnssd/blob/master/example/test.go