@@ -37,35 +37,53 @@ def __init__(
3737 self .wsgi_server = None
3838 self .zeroconf_server = None
3939 self .service_info = None
40+ self .service_infos = []
4041
4142 # Events
4243 self .started_event = gevent .event .Event ()
4344
4445 def register_zeroconf (self ):
4546 if self .labthing :
46- self .service_info = ServiceInfo (
47- "_labthings._tcp.local." ,
48- f"{ self .labthing .safe_title } ._labthings._tcp.local." ,
49- port = self .port ,
50- properties = {
51- "path" : self .labthing .url_prefix ,
52- "title" : self .labthing .title ,
53- "description" : self .labthing .description ,
54- "types" : ";" .join (self .labthing .types ),
55- },
56- addresses = {
57- socket .inet_aton (i )
58- for i in get_all_addresses ()
59- if i not in ("127.0.0.1" , "0.0.0.0" )
60- },
47+ # Get list of host addresses
48+ mdns_addresses = {
49+ socket .inet_aton (i )
50+ for i in get_all_addresses ()
51+ if i not in ("127.0.0.1" , "0.0.0.0" )
52+ }
53+ # LabThing service
54+ self .service_infos .append (
55+ ServiceInfo (
56+ "_labthing._tcp.local." ,
57+ f"{ self .labthing .safe_title } ._labthing._tcp.local." ,
58+ port = self .port ,
59+ properties = {
60+ "path" : self .labthing .url_prefix ,
61+ "title" : self .labthing .title ,
62+ "description" : self .labthing .description ,
63+ "types" : ";" .join (self .labthing .types ),
64+ },
65+ addresses = mdns_addresses ,
66+ )
67+ )
68+ # Mozilla WebThing service
69+ self .service_infos .append (
70+ ServiceInfo (
71+ "_webthing._tcp.local." ,
72+ f"{ self .labthing .safe_title } ._webthing._tcp.local." ,
73+ port = self .port ,
74+ properties = {"path" : self .labthing .url_prefix },
75+ addresses = mdns_addresses ,
76+ )
6177 )
6278 self .zeroconf_server = Zeroconf (ip_version = IPVersion .V4Only )
63- self .zeroconf_server .register_service (self .service_info )
79+ for service in self .service_infos :
80+ self .zeroconf_server .register_service (service )
6481
6582 def stop (self , timeout = 1 ):
6683 # Unregister zeroconf service
6784 if self .zeroconf_server :
68- self .zeroconf_server .unregister_service (self .service_info )
85+ for service in self .service_infos :
86+ self .zeroconf_server .unregister_service (service )
6987 self .zeroconf_server .close ()
7088 self .zeroconf_server = None
7189 # Stop WSGI server with timeout
0 commit comments