Sunset (v1.14.0) - 12 Nov 2024
- Attempt to priorize ping requests and replies over normal traffic
- More options to supply password for basic auth:
--basic-auth-fileandWEBSOCAT_BASIC_AUTH drop_on_backpressure:overlay--uashortcut for-H User-Agent:- SOCKS5 authentication
Happy eyeballs (v1.13.0) - 31 Mar 2024
waitfordata:overlay to delay connection initiation until first data is attempted to be written to it- Dockerfile updates
lengthprefixed:overlay - alternative to base64 mode- Fix for #23 - "happy eyeballs" for ws:// and wss:// URLs.
Maintainance release (v1.12.0) - 17 Sep 2023
- Option to stop sending or replying to WebSocket pings after specified amount of sent or received pings (for testing idling disconnection behaviour of counterparts).
--exec-exit-on-disconnect- Print
Location:header value in error message when facing a redirect instead of a WebSocket connection. - Other minor fixes
--preamble(-p) options to prepend static text to Websocat sessions. For use to authenticate and subscribe to something over WebSocket. Note that specifying passwords on command line may be insecure. Also command line handling around-pis finicky. There is also--preamble-reverse(-P) option to prepend similar chunk in the reverse direction.--compress-{zlib,deflate,gzip}and respective--uncompress-...options to modify binary WebSocket messages going to/from a WebSocket. Note that it is not related to permessage-deflate, which does similar thing, but on lower level.exit_on_specific_byte:overlay to trigger exit when specific byte is encountered. For interactive tty usage.--client-pkcs12-derto specify client identity certificate for connecting towss://orssl:that requires mutual authentication.openssl-probeis now active by default on Linux, to support for overriding CA lists using environment variables.- Incoming WebSocket frames and message are now limited by default, to prevent memory stuffing denial of service. But the default limit is big (100 megabytes). Use
--max-ws-frame-lengthand--max-ws-message-lengthoptions to override. Cargo.lockis now oriented for building with modern Rust compiler. There isCargo.lock.legacywith dependencies manually locked to versions that support Rust 1.46.0.
Some fixes, some features. (v1.10.0) - 17 May 2022
- Add
--close-status-codeand--close-reason - Fix
--queue-lenoption that took no effect - Fix racing to connect to multiple resolved addresses in
tcp:specifier (i.e. "happy eyeballs") - now it skips errors if there is a working connection. This does not fixws://localhostunfortunately. crypto:overlay and associated optionsprometheus:overlay and associated optionsrandom:specifier
Supposedly without yanked crates (v1.9.0) - 30 Oct 2021
sslCargo feature is now enabled by defaultvendored_opensslCargo feature is now not enabled by default--stdout-announce-listening-portsoption to print message when server port is ready to accept clients.--no-closeoption now also affects Websocket server mode, not just clienttimestamp:overlay to mangle message, prepending current timestamp as text--print-ping-rttsoption- Updated deps for #138 (not checked whether all yanks are resolved although).
Fix some bugs (v1.8.0) - 15 Apr 2021
--accept-from-fdoption for better systemd intergrationexec:/cmd:/sh-c:specifiers now don't terminate process prematurely--foreachmsg-wait-readfor betterforeachmsg:overlay behaviour. Nowforeachmsg:exec:./myscriptis more meaningul.--basic-authoption to insert basic authentication header more easily- Websocket close message is now logged in debug mode
Default threaded stdio, log: filter (v1.7.0) - 22 Feb 2021
- Websocat now does not set terminal to nonblocking mode if isatty by default. This should help with #76.
- New overlay
log:that prints bytes as they travel though Websocat, for debugging.
A heartbeat release (v1.6.0) - 08 Jul 2020
- UDP multicast options
foreachmsg:overlay - run specifier (i.e. connect somewhere or execute a program) on each WebSocket message instead of on each WebSocket connection.- Various minor options like
--max-messagesor zero-length message handling. - Low-level Websocket features:
--just-generate-keyand--just-generate-acceptoptions which help generating HTTP headers for WebSockets.ws-lowlevel-server:andws-lowlevel-client:overlays to use expose WebSocket's data encoder/decoder without HTTP part. - Basic
http://client with arbitrary method, uri and so on. - Delay for
autoreconnect:overlay - More pre-built release assets
- Base64 mode for binary WebSocket messages
- Prefixes for text and binary WebSocket messages, allowing to discriminate incoming binary and text WebSocket messages and intermix outgoing binary and text WebSocket messages.
- Sort-of-unfinished
http-post-sse:specifier allowing to use HTTP server-sent events (in one direction) and POST request bodies (in the other direction) instead of (or in addition to) a WebSocket and to bridge them together. This mode is not tested properly although.
Client basic auth, header-to-env (v1.5.0) - 18 Aug 2019
- Using client URI's like
websocat ws://user:password@host/now adds basic authentication HTTP header to request - New command-line option:
--header-to-env - Minor dependencies update
- Built with newer Rust on newer Debian
- New options:
--server-protocol,--ping-timeout,--ping-interval,--server-header - Fixed replying to WebSocket pings
- Fixed replying to requests with
Sec-WebSocket-Protocol.
tokio, conncap, pkcs12-passwd, typos (v1.3.0) - 06 Mar 2019
-k (--insecure), native-tls (v1.2.0) - 01 Nov 2018
More features (v1.1.0) - 30 Aug 2018
- Static files aside from the websocket for easy prototyping
- SOCKS5 proxy client
- wss:// listener
- Setting environment variables for
exec: - Sending SIGHUP signal to child process on client disconnect
--jsonrpcmode
Preview of 1.1 (v1.1-pre) - 13 Jul 2018
- --set-environment option and --static-file
The release. Finally. (v1.0.0) - 04 Jul 2018
Refactor and more features (v1.0.0-beta) - 20 Jun 2018
Async alpha (v1.0.0-alpha) - 10 May 2018
Async preview (v0.5.1-alpha) - 14 Mar 2018
Forked rust-websocket (v0.4.0) - 18 Jan 2017
More features (v0.3.0) - 22 Dec 2016
- Unix sockets
- Executing programs and command lines
- Unidirectional mode
- Text mode (don't rely on it)