package server import ( "log" "net/http" "strconv" "time" "github.com/gorilla/websocket" ) func (server *Server) Start() error { // Start the server http.HandleFunc("/ws", func(w http.ResponseWriter, r *http.Request) { handleConnections(w, r) }) log.Fatal(http.ListenAndServe(server.ListenAddress+":"+strconv.Itoa(server.ListenPort), nil)) time.Sleep(600 * time.Second) return nil } var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func handleConnections(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Println(err) return } defer conn.Close() log.Println("Starting server") go readMessages(conn) writeMessages(conn) } func readMessages(conn *websocket.Conn) { for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println("Error reading message:", err) break } log.Printf("Received(%d): %s\n", messageType, message) // This sets the time-out for any incoming messages. // conn.SetReadDeadline(time.Now().Add(10 * time.Second)) } } func writeMessages(conn *websocket.Conn) { for { err := conn.WriteMessage(websocket.TextMessage, []byte("Hello World!")) if err != nil { log.Println("Error writing message:", err) break } // This sets the time-out for any outgoing messages. // conn.SetWriteDeadline(time.Now().Add(10 * time.Second)) time.Sleep(time.Second) } }