@@ -17,6 +17,7 @@ import (
1717//go:embed public
1818var EmbedFS embed.FS
1919
20+ // DeviceInfo holds device information from UDP broadcasts
2021type DeviceInfo struct {
2122 Name string `json:"name"`
2223 IP string `json:"ip"`
@@ -31,30 +32,31 @@ var upgrader = websocket.Upgrader{
3132
3233var clients = make (map [* websocket.Conn ]bool )
3334
35+ // udpListener listens for UDP broadcasts from devices
3436func udpListener (port int ) {
3537 addr := net.UDPAddr {
3638 Port : port ,
3739 IP : net .ParseIP ("0.0.0.0" ),
3840 }
3941 conn , err := net .ListenUDP ("udp4" , & addr )
4042 if err != nil {
41- log .Fatalf ("监听UDP失败 : %v" , err )
43+ log .Fatalf ("❌ UDP listener failed to start on port %d : %v" , port , err )
4244 }
4345 defer conn .Close ()
4446
45- buf := make ([]byte , 1024 )
46- log .Printf ("开始监听设备广播,端口: %d... " , port )
47+ buffer := make ([]byte , 1024 )
48+ log .Printf ("📡 Listening for device broadcasts on UDP port %d " , port )
4749
4850 for {
49- n , _ , err := conn .ReadFromUDP (buf )
51+ n , _ , err := conn .ReadFromUDP (buffer )
5052 if err != nil {
51- log .Printf ("接收失败 : %v" , err )
53+ log .Printf ("⚠️ Error receiving UDP broadcast : %v" , err )
5254 continue
5355 }
5456
5557 var device DeviceInfo
56- if err := json .Unmarshal (buf [:n ], & device ); err != nil {
57- log .Printf ("JSON解析失败 : %v" , err )
58+ if err := json .Unmarshal (buffer [:n ], & device ); err != nil {
59+ log .Printf ("⚠️ Failed to parse device info : %v" , err )
5860 continue
5961 }
6062
@@ -65,10 +67,11 @@ func udpListener(port int) {
6567 }
6668}
6769
70+ // wsHandler handles WebSocket upgrade requests and client management
6871func wsHandler (c * gin.Context ) {
6972 conn , err := upgrader .Upgrade (c .Writer , c .Request , nil )
7073 if err != nil {
71- log .Println ( "升级失败: " , err )
74+ log .Printf ( "⚠️ WebSocket upgrade failed: %v " , err )
7275 return
7376 }
7477 defer conn .Close ()
@@ -83,46 +86,47 @@ func wsHandler(c *gin.Context) {
8386 }
8487}
8588
89+ // main initializes and starts the HTTP and UDP services
8690func main () {
8791 var httpPort int
8892 var udpPort int
8993
90- flag .IntVar (& httpPort , "http-port" , 18080 , "HTTP监听端口 " )
91- flag .IntVar (& udpPort , "udp-port" , 9999 , "UDP监听端口 " )
94+ flag .IntVar (& httpPort , "http-port" , 6200 , "Port for HTTP server " )
95+ flag .IntVar (& udpPort , "udp-port" , 9999 , "Port for UDP listener " )
9296 flag .Parse ()
9397
98+ log .Printf ("🚀 Starting device discovery service" )
99+
94100 go udpListener (udpPort )
95101
102+ gin .SetMode (gin .ReleaseMode )
96103 r := gin .Default ()
97104
98105 r .GET ("/" , static .ServeEmbed ("public" , EmbedFS ))
99-
100106 r .GET ("/ws" , wsHandler )
101107
102108 r .GET ("/ping" , func (c * gin.Context ) {
103- c .String (200 , "pong" )
109+ c .String (http . StatusOK , "pong" )
104110 })
105111
106112 r .GET ("/config" , func (c * gin.Context ) {
107113 callback := c .Query ("callback" )
108114 host := c .Request .Host
109115
110116 if callback == "" {
111- c .JSON (400 , gin.H {"error" : "callback parameter required" })
117+ c .JSON (http . StatusBadRequest , gin.H {"error" : "callback parameter required" })
112118 return
113119 }
114120
115- data := gin.H {
116- "host" : host ,
117- }
118-
119- c .JSONP (200 , data )
121+ data := gin.H {"host" : host }
122+ c .JSONP (http .StatusOK , data )
120123 })
121124
122125 r .NoRoute (func (c * gin.Context ) {
123- fmt .Printf ("%s doesn't exists, redirect on / \n " , c .Request .URL .Path )
126+ log .Printf ("🔄 Redirecting unknown route '%s' to '/' " , c .Request .URL .Path )
124127 c .Redirect (http .StatusMovedPermanently , "/" )
125128 })
126129
130+ log .Printf ("🌐 HTTP server running on port %d" , httpPort )
127131 r .Run (fmt .Sprintf (":%d" , httpPort ))
128132}
0 commit comments