...
1 package main
2
3 import (
4 "net/http"
5 "os"
6
7 "github.com/gorilla/websocket"
8
9 "edge-infra.dev/pkg/lib/logging"
10 )
11
12 var upgrader = websocket.Upgrader{CheckOrigin: func(_ *http.Request) bool { return true }}
13
14 func returnHostName(w http.ResponseWriter, r *http.Request) {
15 logger := logging.NewLogger().WithName("wsserver")
16 c, err := upgrader.Upgrade(w, r, nil)
17 if err != nil {
18 logger.Error(err, "upgrade error")
19 return
20 }
21 defer c.Close()
22
23 for {
24 mt, message, err := c.ReadMessage()
25 if err != nil {
26 logger.Error(err, "read error")
27 break
28 }
29 logger.Info("message received", "message", message)
30 nodeName := os.Getenv("NodeName")
31 logger.Info("discovered node", "nodeName", nodeName)
32 err = c.WriteMessage(mt, []byte(nodeName))
33 if err != nil {
34 logger.Error(err, "Error writing")
35 break
36 }
37 }
38 }
39
40 func main() {
41 logger := logging.NewLogger().WithName("wsserver")
42 logger.Info("Starting server")
43 http.HandleFunc("/", returnHostName)
44
45 if err := http.ListenAndServe("0.0.0.0:80", nil); err != nil {
46 logger.Error(err, "Server error")
47 os.Exit(1)
48 }
49 }
50
View as plain text