package main import ( "context" "log" "time" "git.company.lan/gopkg/recws" ) func main() { ctx, cancel := context.WithCancel(context.Background()) ws := recws.RecConn{ KeepAliveTimeout: 10 * time.Second, } ws.Dial("wss://echo.websocket.org", nil) go func() { time.Sleep(2 * time.Second) cancel() }() for { select { case <-ctx.Done(): go ws.Close() log.Printf("Websocket closed %s", ws.GetURL()) return default: if !ws.IsConnected() { log.Printf("Websocket disconnected %s", ws.GetURL()) continue } if err := ws.WriteMessage(1, []byte("Incoming")); err != nil { log.Printf("Error: WriteMessage %s", ws.GetURL()) return } _, message, err := ws.ReadMessage() if err != nil { log.Printf("Error: ReadMessage %s", ws.GetURL()) return } log.Printf("Success: %s", message) } } }