Skip to content

ksysoev/wsget

Repository files navigation

wsget

Tests codecov Go Report Card License: MIT

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.

Installation

Downloading binaries:

Compiled executables can be downloaded from here.

Install from source code:

go install github.com/ksysoev/wsget/cmd/wsget@latest

Install with homebrew:

brew tap ksysoev/wsget
brew install wsget

Usage

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
}

Connection Mode Keyboard Shortcuts Documentation

Key/Combination Action
Esc / Ctrl + C / Ctrl + D Discconnect from the server.
Enter Enter request editing mode.
Ctrl + L Clear the terminal and redisplay the welcome message.
: Enter command mode to execute a specific command.

Request/Command Editor Mode Keyboard Shortcuts

General Navigation and Editing Shortcuts

Key/Combination Action
Left Arrow Move the cursor one position to the left.
Right Arrow Move the cursor one position to the right.
Space Insert a space character at the current cursor position.
Enter Adds a newline or completes editing (depends on editor mode).
Backspace Remove the character before the cursor.
Delete Remove the character after the cursor.

Advanced Navigation

Key/Combination Action
Alt + Backspace Delete the word to the left of the cursor.
Alt + Left Arrow Move the cursor to the start of the previous word.
Alt + Right Arrow Move the cursor to the start of the next word.
Alt + Delete Delete the word to the right of the cursor.
Home Move the cursor to the start of the line.
End Move the cursor to the end of the line.

Content Modification

Key/Combination Action
Ctrl + U Clear all content from the editor.
Ctrl + L Clear the terminal's display while retaining content and positioning.

History Navigation

Key/Combination Action
Up Arrow Cycle to the previous request in history.
Down Arrow Cycle to the next request in history.

Miscellaneous Shortcuts

Key/Combination Action
Ctrl + S Complete editing.
Ctrl + C or Ctrl + D or Esc Interrupt the editing process; cancel and terminate editing.

Macros

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

Primitive commands

  • edit {"ping": 1} opens request editor with provided text
  • send {"ping": 1} sends requests to WebSocket connection
  • wait 5 waits for responses or provided time out, whatever comes first. If the timeout is reached then an error will be returned. if 0 is provided command will wait response without a time limit
  • exit interrupts the program execution
  • repeat 5 send {"ping": 1} repeat provided command or macro defined number of times
  • sleep 1 sleeps for the provided number of seconds

Macros arguments

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

Macros presets

License

wsget is licensed under the MIT License. See the LICENSE file for more information.