diff --git a/README.md b/README.md index 9064b70..d9d6c55 100644 --- a/README.md +++ b/README.md @@ -28,14 +28,15 @@ $ 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 @@ -43,6 +44,6 @@ Flags: -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 ``` \ No newline at end of file diff --git a/connection.go b/connection.go index 6fe8ebf..9fd648f 100644 --- a/connection.go +++ b/connection.go @@ -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() diff --git a/main.go b/main.go index 91c30ec..b2e2f89 100644 --- a/main.go +++ b/main.go @@ -21,9 +21,11 @@ var ( insecure bool subProtocals string initMsg string + authHeader string timestamp bool binAsText bool pingPong bool + compression bool pingInterval time.Duration } ) @@ -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() }