@@ -37,35 +37,55 @@ def __init__(
3737 self .wsgi_server = None
3838 self .zeroconf_server = None
3939 self .service_info = None
40+ self .service_infos = set ()
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+ # LabThing service
48+ self .service_infos .add (
49+ ServiceInfo (
50+ "_labthing._tcp.local." ,
51+ f"{ self .labthing .safe_title } ._labthing._tcp.local." ,
52+ port = self .port ,
53+ properties = {
54+ "path" : self .labthing .url_prefix ,
55+ "title" : self .labthing .title ,
56+ "description" : self .labthing .description ,
57+ "types" : ";" .join (self .labthing .types ),
58+ },
59+ addresses = {
60+ socket .inet_aton (i )
61+ for i in get_all_addresses ()
62+ if i not in ("127.0.0.1" , "0.0.0.0" )
63+ },
64+ )
65+ )
66+ # Mozilla WebThing service
67+ self .service_infos .add (
68+ ServiceInfo (
69+ "_webthing._tcp.local." ,
70+ f"{ self .labthing .safe_title } ._webthing._tcp.local." ,
71+ port = self .port ,
72+ properties = {"path" : self .labthing .url_prefix },
73+ addresses = {
74+ socket .inet_aton (i )
75+ for i in get_all_addresses ()
76+ if i not in ("127.0.0.1" , "0.0.0.0" )
77+ },
78+ )
6179 )
6280 self .zeroconf_server = Zeroconf (ip_version = IPVersion .V4Only )
63- self .zeroconf_server .register_service (self .service_info )
81+ for service in self .service_infos :
82+ self .zeroconf_server .register_service (service )
6483
6584 def stop (self , timeout = 1 ):
6685 # Unregister zeroconf service
6786 if self .zeroconf_server :
68- self .zeroconf_server .unregister_service (self .service_info )
87+ for service in self .service_infos :
88+ self .zeroconf_server .unregister_service (service )
6989 self .zeroconf_server .close ()
7090 self .zeroconf_server = None
7191 # Stop WSGI server with timeout
0 commit comments