package main import ( "context" "github.com/mariuspass/recws" "log" "time" ) 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) } } }