wsget is a command-line tool for interacting with a WebSocket server. It supports plain text and JSON messages and can save the output of the session into a file.
Compiled executables can be downloaded from here.
go install github.com/ksysoev/wsget/cmd/wsget@latest
brew tap ksysoev/wsget
brew install wsget
To use wsget, you need to specify the WebSocket URL:
wsget wss://ws.postman-echo.com/raw
You also can pass the initial request as part command line argument by using flag -r
wsget wss://ws.postman-echo.com/raw -r "Hello world!"
By default, wsget will print the data received from the WebSocket server only to the console. You can also save the data to a file using the -o flag:
wsget wss://ws.postman-echo.com/raw -o output.txt
Example:
wsget "wss://ws.derivws.com/websockets/v3?app_id=1" -r '{"time":1}'
Use Enter to input request and send it, Ctrl+C to exit
->
{
"time": 1
}
<-
{
"echo_req": {
"time": 1
},
"msg_type": "time",
"time": 1698555261
}
wsget
provides a possibility for customization. You can create your sets of macros with a configuration file. the file should be located at ~/wsget/macro/your_configuration.yaml
. wsget
will read all files from this directory and use only configuration files that match the WebSocket connection hostname.
version: "1"
domains:
- example.com
macro:
ping:
- |-
send {
"ping": 1,
}
- wait 5
edit {"ping": 1}
opens request editor with provided textsend {"ping": 1}
sends requests to WebSocket connectionwait 5
waits for responses or provided time out, whatever comes first. If the timeout is reached then an error will be returned. if0
is provided command will wait response without a time limitexit
interrupts the program executionrepeat 5 send {"ping": 1}
repeat provided command or macro defined number of timessleep 1
sleeps for the provided number of seconds
Macro support Go template language. It provides a possibility to pass arguments to your macro command and substitute or adjust the behavior of your macro commands.
version: "1"
domains:
- example.com
macro:
authorize:
- |-
send {
"authorize": "{{index .Args 0}}",
}
- wait 2
wsget is licensed under the MIT License. See the LICENSE file for more information.