Skip to content

Commit

Permalink
Add support for compression&authorization
Browse files Browse the repository at this point in the history
  • Loading branch information
slytomcat committed Nov 6, 2023
1 parent e48bed9 commit d73c638
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,21 +28,22 @@ $ ws ws://localhost:3000/ws
< {"type":"broadcast","payload":"Hello, world"}
< {"type":"broadcastResult","payload":"Hello, world","listenerCount":1}
> ^D
EOF
```

## Other possible options

```
Flags:
-a, --auth string auth header value, like 'Bearer $TOKEN'
-b, --bin2text print binary message as text
-c, --compression enable compression
-h, --help help for ws
-m, --init string connection init message
-k, --insecure skip ssl certificate check
-i, --interval duration send ping each interval (ex: 20s)
-o, --origin string websocket origin (default value is formed from URL)
-p, --pingPong print out ping/pong messages
-s, --subprotocal string sec-websocket-protocal field
-t, --timestamp print timestamps for sent and incoming messages
-t, --timestamp print timestamps for sent and received messages
-v, --version print version
```
7 changes: 5 additions & 2 deletions connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,16 @@ func getPrefix() string {
func connect(url string, rlConf *readline.Config) []error {
headers := make(http.Header)
headers.Add("Origin", options.origin)

if options.authHeader != "" {
headers.Add("Authorization", options.authHeader)
}
dialer := websocket.Dialer{
Proxy: http.ProxyFromEnvironment,
TLSClientConfig: &tls.Config{
InsecureSkipVerify: options.insecure,
},
Subprotocols: []string{options.subProtocals},
EnableCompression: options.compression,
Subprotocols: []string{options.subProtocals},
}
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
Expand Down
6 changes: 5 additions & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,11 @@ var (
insecure bool
subProtocals string
initMsg string
authHeader string
timestamp bool
binAsText bool
pingPong bool
compression bool
pingInterval time.Duration
}
)
Expand All @@ -38,11 +40,13 @@ func main() {
rootCmd.Flags().BoolVarP(&options.printVersion, "version", "v", false, "print version")
rootCmd.Flags().BoolVarP(&options.insecure, "insecure", "k", false, "skip ssl certificate check")
rootCmd.Flags().StringVarP(&options.subProtocals, "subprotocal", "s", "", "sec-websocket-protocal field")
rootCmd.Flags().BoolVarP(&options.timestamp, "timestamp", "t", false, "print timestamps for sent and incoming messages")
rootCmd.Flags().StringVarP(&options.authHeader, "auth", "a", "", "auth header value, like 'Bearer $TOKEN'")
rootCmd.Flags().BoolVarP(&options.timestamp, "timestamp", "t", false, "print timestamps for sent and received messages")
rootCmd.Flags().BoolVarP(&options.binAsText, "bin2text", "b", false, "print binary message as text")
rootCmd.Flags().BoolVarP(&options.pingPong, "pingPong", "p", false, "print out ping/pong messages")
rootCmd.Flags().DurationVarP(&options.pingInterval, "interval", "i", 0, "send ping each interval (ex: 20s)")
rootCmd.Flags().StringVarP(&options.initMsg, "init", "m", "", "connection init message")
rootCmd.Flags().BoolVarP(&options.compression, "compression", "c", false, "enable compression")
rootCmd.Execute()
}

Expand Down

0 comments on commit d73c638

Please sign in to comment.