1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package main
- import (
- "flag"
- "fmt"
- "github.com/gorilla/websocket"
- "os"
- "os/signal"
- "syscall"
- )
- var URL string
- func main() {
- flag.StringVar(&URL, "u", "", "URL to connect")
- flag.Parse()
- c, _, err := websocket.DefaultDialer.Dial(URL, nil)
- if err != nil {
- fmt.Println("failed dial ws: ", err)
- return
- }
- chSIGINT := make(chan os.Signal, 1)
- chError := make(chan error, 1)
- signal.Notify(chSIGINT, syscall.SIGINT)
- go func() {
- for {
- _, dat, err := c.ReadMessage()
- if err != nil {
- chError <- fmt.Errorf("error reading websocket message: %s", err.Error())
- return
- }
- fmt.Print(string(dat))
- }
- }()
- select {
- case <-chSIGINT:
- fmt.Println()
- fmt.Println("gotun-rlog abort by user Ctrl+C.")
- err := c.Close()
- if err != nil {
- fmt.Println("failed close websocket connection:", err.Error())
- }
- return
- case err := <-chError:
- if err != nil {
- fmt.Println("websocket error: ", err.Error())
- }
- return
- }
- }
|