Websocat Versions Save

Command-line client for WebSockets, like netcat (or curl) for ws:// with advanced socat-like functions

v1.13.0

1 month ago

Changes

  • waitfordata: overlay to delay connection initiation until first data is attempted to be written to it
  • Dockerfile updates
  • lengthprefixed: overlay - binary alternative to base64 mode
  • Fix for #23 - "happy eyeballs" for ws:// and wss:// URLs.

Full Changelog: https://github.com/vi/websocat/compare/v1.12.0...v1.13.0

Most files are not tested, except of one manual websocat wss://ws.vi-server.org/mirror smoke-check.

Linux, Android and Freebsd builds embed OpenSSL version 3.2.1.

v1.12.0

7 months ago
  • 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
  • Some pre-built artifacts should contain OpenSSL version 3.1.2

Note that arm-unknown-linux-musleabi version is flawed. Use previous release if you need a static version.

v1.11.0

1 year ago

Changelog

  • --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 -p is 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-der to specify client identity certificate for connecting to wss:// or ssl: that requires mutual authentication.
  • openssl-probe is 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-length and --max-ws-message-length options to override.
  • Cargo.lock is now oriented for building with modern Rust compiler. There is Cargo.lock.legacy with dependencies manually locked to versions that support Rust 1.46.0.

Release artifacts

(downloads below the table)

File TLS support Tested by author Notes
websocat.x86_64-unknown-linux-musl built-in OpenSSL 1.1.1q no
websocat.x86_64-apple-darwin uses system crypto no
websocat.x86_64-pc-windows-gnu.exe uses system crypto no Malware scanners detect problems with this file for some reason. Use the next file as an alternative.
websocat_rebuild.x86_64-pc-windows-gnu.exe uses system crypto no rebuilt due #172
websocat.i686-pc-windows-gnu.exe uses system crypto no
websocat.aarch64-linux-android built-in OpenSSL 1.1.1q no
websocat.armv7-linux-androideabi built-in OpenSSL 1.1.1q no
websocat.arm-unknown-linux-musleabi built-in OpenSSL 1.1.1q no
websocat.aarch64-unknown-linux-musl built-in OpenSSL 1.1.1q no
websocat.x86_64-unknown-freebsd built-in OpenSSL 1.1.1q no Contains additional features
websocat_nossl.i686-unknown-linux-musl none no see some previous release notes for the reason of why no ssl
websocat_max.x86_64-unknown-linux-musl built-in OpenSSL 1.1.1q no Contains additional features
websocat_max.aarch64-unknown-linux-musl built-in OpenSSL 1.1.1q no Contains additional features
websocat_mini.x86_64-unknown-linux-gnu depends on libssl.so.1.1 no panic_immeidate_abort, system TLS, upx
websocat.riscv64gc-unknown-linux-musl built-in OpneSSL 1.1.1t no panic_immeidate_abort, a bit newer code
debug.7z unstripped versions of all executables above

The table may be updated in future.

v1.10.0

1 year ago

Changelog

  • Add --close-status-code and --close-reason
  • Fix --queue-len option 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 fix ws://localhost unfortunately.
  • crypto: overlay and associated options
  • prometheus: overlay and associated options
  • random: specifier

Release artifacts

(downloads below the table)

File TLS support Tested by author Notes
websocat.x86_64-unknown-linux-musl built-in OpenSSL 1.1.1n using similar build myself
websocat.x86_64-pc-windows-gnu.exe uses system crypto no
websocat.x86_64-apple-darwin uses system crypto no
websocat.i686-pc-windows-gnu.exe uses system crypto no
websocat.aarch64-linux-android built-in OpenSSL 1.1.1n basic test only
websocat.armv7-linux-androideabi built-in OpenSSL 1.1.1n basic test only
websocat.arm-unknown-linux-musleabi built-in OpenSSL 1.1.1n basic test only
websocat.aarch64-unknown-linux-musl built-in OpenSSL 1.1.1n no
websocat.x86_64-unknown-freebsd built-in OpenSSL 1.1.1n basic test only
websocat_nossl.i686-unknown-linux-musl none basic test only see some previous release notes for the reason of why no ssl
debug.7z unstripped versions of all executables above

v3.0.0-prealpha0

2 years ago

You are recommended to use Websocat 1.9.0, not this release. This release does not necessarily preclude Websocat 1.10.0 in the future.

This release showcases rewritten Websocat using Tokio 1, Hyper 0.14 and Tungstenite instead of legacy dependencies. This opens up a world of QUIC, rfc8441 and other new things to keep Websocat relevant. A lot of features from Websocat1 are not yet implemented, CLI UI compatibility with Websocat1 is also not implemented yet. Help is partially implemented. Book is just started. Release artifacts build script is not dockerised.

It's "3.0" instead of "2.0" because of Websocat2 was supposed to be version based on Tokio 0.2 + Hyper 0.12 (or Hyper-less), split to multiple crates; but that was abandoned.

websocat3.i686-pc-windows-gnu, websocat3.x86_64-apple-darwin and websocat3.x86_64-pc-windows-gnu are built against native-tls, all the rest is built against rustls + webpki-roots.

v1.9.0

2 years ago
  • ssl Cargo feature is now enabled by default
  • vendored_openssl Cargo feature is now not enabled by default
  • --stdout-announce-listening-ports option to print message when server port is ready to accept clients.
  • --no-close option now also affects Websocket server mode, not just client
  • timestamp: overlay to mangle message, prepending current timestamp as text
  • --print-ping-rtts option
  • Updated deps for #138 (not checked whether all yanks are resolved although).

Note that this release contains less pre-built executables than previous releases. You may want to try older versions.

file description tested?
websocat_linux64 Static amd64 with embedded openssl I'm using it myself
websocat_linux32_nossl Static i686 without ssl support (still crashes) tried once connecting to ws://
websocat_android Built in openssl, for Android armv7 Tried connecting to wss:// on Android 6 and Android 11
websocat_linuxarm32 Built in openssl Tried wss:// once, seems working
websocat_win32.exe Built with ssl enabled Tried in wine. ws:// connects, but ssl fails
websocat_win64.exe Built with ssl enabled Tried in wine. ws:// connects, but ssl fails
websocat_mac Should use system ssl, for x86_64 mac Tried in darling. ws:// connects, but ssl fails
websocat_freebsd Uses system openssl 111 Tried connecting to wss:// in VM
debug.7z unstripped executables for symbols

v1.8.0

3 years ago
  • --accept-from-fd option for better systemd intergration
  • exec:/cmd:/sh-c: specifiers now don't terminate process prematurely
  • --foreachmsg-wait-read for better foreachmsg: overlay behaviour. Now foreachmsg:exec:./myscript is more meaningul.
  • --basic-auth option to insert basic authentication header more easily
  • Websocket close message is now logged in debug mode

Unfortunately, build system for providing prebuilt executables is not reproducible and was only partially automatized; and it is now falling apart - not all artifacts are provided. It may make sense to try previous (including substantially old, e.g. v1.0.0) versions of Websocat's prebuilt executables. Better building situation may arrive with Websocat 3.

OpenSSL is actually static in many versions, even without -static in the name.

v1.7.0

3 years ago

Changelog:

  • 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.

Changed in released files:

  • Added websocat_arm-android-nosignal for running Websocat on old (e.g. 4.4) Android devices.
  • websocat_mipsel-linux-static failed to build. Use nossl version or reach for v1.6.0.
  • websocat_i386-linux-static fails due to https://github.com/alexcrichton/openssl-src-rs/issues/86. Keep on using v1.6.0's version for a while.
  • Now I realize that OpenSSL is statically built-in everywhere, not just in *-static builds. Deb package dependency is probably irrelevant now.

v1.6.0

3 years ago

A release to pretend that Websocat development is going on (while in reality it has mostly petered out). Also to check that release script still works.

Triggered by activity in #55.

Although version number "rolled back" to 1.x series, it is a continuation of the "2.0.0-alpha0" below and contains everything from it. It is possible to connect to a websocket using new "2.0"-ish scheme, but it's a low-level-only command and is not the default method.

In addition to everything specified in "v2.0.0-alhpa0" changelog, there are:

  • 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.

As usual, in case of Websocat fails to start or work for you, try a nossl version, try some previous release or try just building it from source code.

v2.0.0-alpha0

4 years ago

Release is built on my laptop using autorelease.sh script. Not tested at all (even on Linux), releasing just because of enough mini-features accumulated.

New features:

  • 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-messages or zero-length message handling.
  • Low-level Websocket features: --just-generate-key and --just-generate-accept options which help generating HTTP headers for WebSockets. ws-lowlevel-server: and ws-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

It is not actual Websocat 2.0, as planned [disruptive] internal changes are not finished and by default it works like good old Websocat 1.0.


As usual, it may be worth to try older builds in case of problems.