vi / websocat

Command-line client for WebSockets, like netcat (or curl) for ws:// with advanced socat-like functions
MIT License
6.74k stars 261 forks source link

REQUEST: Option to display ping/pong/close #49

Closed FGasper closed 3 years ago

FGasper commented 5 years ago

Hello,

Is there an option to display sent/received control frames? I don’t see one.

Thank you!

vi commented 5 years ago

Pings, pongs and closing should be visible in verbose mode:

$ websocat  -v ws://echo.websocket.org --ping-interval=1
[INFO  websocat::lints] Auto-inserting the line mode
[INFO  websocat::sessionserve] Serving Line2Message(Stdio) to Message2Line(WsClient("ws://echo.websocket.org/")) with Options { websocket_text_mode: true, websocket_protocol: None, websocket_reply_protocol: None, udp_oneshot_mode: false, unidirectional: false, unidirectional_reverse: false, exit_on_eof: false, oneshot: false, unlink_unix_socket: false, exec_args: [], ws_c_uri: "ws://0.0.0.0/", linemode_strip_newlines: false, linemode_strict: false, origin: None, custom_headers: [], custom_reply_headers: [], websocket_version: None, websocket_dont_close: false, one_message: false, no_auto_linemode: false, buffer_size: 65536, broadcast_queue_len: 16, read_debt_handling: Warn, linemode_zero_terminated: false, restrict_uri: None, serve_static_files: [], exec_set_env: false, reuser_send_zero_msg_on_disconnect: false, process_zero_sighup: false, process_exit_sighup: false, socks_destination: None, auto_socks5: None, socks5_bind_script: None, tls_domain: None, tls_insecure: false, max_parallel_conns: None, ws_ping_interval: Some(1), ws_ping_timeout: None }
[INFO  websocat::stdio_peer] get_stdio_peer (async)
[INFO  websocat::stdio_peer] Setting stdin to nonblocking mode
[INFO  websocat::stdio_peer] Installing signal handler
[INFO  websocat::ws_client_peer] get_ws_client_peer
[INFO  websocat::ws_client_peer] Connected to ws
[INFO  websocat::ws_peer] Sending WebSocket ping
[INFO  websocat::ws_peer] Received a pong from websocket
ewqrewqrewqr
ewqrewqrewqr
[INFO  websocat::ws_peer] Sending WebSocket ping
[INFO  websocat::ws_peer] Received a pong from websocket
[INFO  websocat::ws_peer] Sending WebSocket ping
[INFO  websocat::ws_peer] Received a pong from websocket
24214321
24214321
[INFO  websocat::ws_peer] Sending WebSocket ping
[INFO  websocat::ws_peer] Received a pong from websocket
[INFO  websocat::ws_peer] Sending WebSocket ping
[INFO  websocat::ws_peer] Received a pong from websocket
[INFO  websocat::sessionserve] Forward finished
[INFO  websocat::sessionserve] Forward shutdown finished
[INFO  websocat::sessionserve] Reverse finished
[INFO  websocat::sessionserve] Reverse shutdown finished
[INFO  websocat::sessionserve] Finished
[INFO  websocat::stdio_peer] Restoring blocking status for stdin
[INFO  websocat::stdio_peer] Restoring blocking status for stdin
sepbot commented 3 years ago

@vi only client initiated pings show up, but when the server sends a ping, websocat responds with a pong but nothing shows up in the terminal output (i confirmed by inspecting through wireshark).

vi commented 3 years ago

Would just adding INFO logs for them be enough?

vi commented 3 years ago

Note that those pings and closes are already visible if you increase the logging level further websocat -v -v.

I made them INFO and now should be visible at one -v.