From 56484a74e94f6c1b42597d13048a6c8498aae977 Mon Sep 17 00:00:00 2001 From: Mario Aichinger Date: Tue, 7 Mar 2017 13:28:24 +0100 Subject: [PATCH 1/2] Added a ping and a close comandline parameter to enable ping and close messages --- README.md | 22 ++++++++++++++++++++++ main.go | 30 +++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 387f574..1d0c7f7 100644 --- a/README.md +++ b/README.md @@ -24,5 +24,27 @@ brew install telsocket ```bash telsocket -url ``` +Send custom headers + +```bash +telsocket -url -headers name1=value1,name2=value2 +``` + +Enable `ping` and/or `close` messages + +```bash +telsocket -url -ping +``` +```bash +telsocket -url -close +``` + +```bash +telsocket -url -close -ping +``` + +After the connection is established write _ping_ or _close_ and hit enter. + + ![](http://telsocket.org/images/sample.png) diff --git a/main.go b/main.go index b945bb0..3ea0fca 100644 --- a/main.go +++ b/main.go @@ -14,6 +14,8 @@ import ( var url = flag.String("url", "", "-url ws://127.0.0.1") var headers = flag.String("headers", "", "-headers name1=value1,name2=value2") +var withPing = flag.Bool("ping", false, "-ping") +var withClose = flag.Bool("close", false, "-close") func main() { flag.Parse() @@ -30,7 +32,21 @@ func main() { } done := make(chan bool) c := NewClient(*url, headersMap) - + if *withPing { + c.SetPongHandler(func(s string) error { + fmt.Println("\n", colorRed("PONG rceived:"), colorRed(s)) + return nil + }) + var defaultPingHandler = c.PingHandler() + c.SetPingHandler(func(s string) error { + fmt.Println("\n", colorRed("PING rceived:"), colorRed(s)) + if err := defaultPingHandler(string(s)); err != nil { + return err + } + fmt.Println(colorRed(" PONG sent")) + return nil + }) + } go func() { for { _, r, err := c.ReadMessage() @@ -51,6 +67,15 @@ func main() { return } line = strings.TrimSpace(line) + if *withClose && line == "close" { + c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) + return + } + if *withPing && line == "ping" { + c.WriteMessage(websocket.PingMessage, []byte{}) + fmt.Print("\n", colorRed(" PING sent")) + continue + } if err = c.WriteMessage(1, []byte(line)); err != nil { fmt.Println(err.Error()) } @@ -80,3 +105,6 @@ func NewClient(url string, headers map[string]string) *websocket.Conn { func color(msg string) string { return ("\033[36m" + msg + "\033[0m") } +func colorRed(msg string) string{ + return ("\033[31m" + msg + "\033[0m") +} From 4df010ae1513131078d2a39510f473ccf352e06d Mon Sep 17 00:00:00 2001 From: Mario Aichinger Date: Tue, 21 Jul 2020 20:31:58 +0200 Subject: [PATCH 2/2] add message size limiting --- README.md | 5 ++++- main.go | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1d0c7f7..3193d80 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,9 @@ telsocket -url -close -ping After the connection is established write _ping_ or _close_ and hit enter. - +Set the maximal payload size per frame (usefull to debug multi-frame messages). Replace _XXX_ with the new maximal payload size. +```bash +telsocket -url -maxframesize=XXX +``` ![](http://telsocket.org/images/sample.png) diff --git a/main.go b/main.go index 3ea0fca..447d2f3 100644 --- a/main.go +++ b/main.go @@ -16,6 +16,7 @@ var url = flag.String("url", "", "-url ws://127.0.0.1") var headers = flag.String("headers", "", "-headers name1=value1,name2=value2") var withPing = flag.Bool("ping", false, "-ping") var withClose = flag.Bool("close", false, "-close") +var maxFrameSize = flag.Int("maxframesize", 0, "-maxframesize") func main() { flag.Parse() @@ -92,7 +93,20 @@ func NewClient(url string, headers map[string]string) *websocket.Conn { for key, value := range headers { r.Header.Add(key, value) } - c, _, err := websocket.DefaultDialer.Dial(url, r.Header) + + var d websocket.Dialer + + d = *websocket.DefaultDialer + + if *maxFrameSize > 0 { + d = websocket.Dialer{ + WriteBufferSize : *maxFrameSize, + } + } + + c, _, err := d.Dial(url, r.Header) + + if err != nil { log.Fatal("errrr ", err) } else {