A command-line tool for interacting with WebSockets, offering netcat/curl/socat-like functionality with advanced proxying and bridging capabilities.
Websocat is a command-line client and server for WebSockets that functions like netcat, curl, or socat for ws:// and wss:// protocols. It allows developers to interact with WebSocket endpoints directly from the terminal, enabling tasks such as connecting to echo servers, serving WebSocket connections, and proxying between WebSockets and other network protocols like TCP.
Developers, DevOps engineers, and system administrators who need to test, debug, or integrate WebSocket-based services in scripts, automation, or network troubleshooting scenarios.
Websocat stands out by offering advanced socat-like functionality—such as protocol bridging, message transformation, and external program execution—within a single, cross-platform tool, making it more powerful than basic WebSocket CLI utilities.
Command-line client for WebSockets, like netcat (or curl) for ws:// with advanced socat-like functions
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Proxies seamlessly between WebSockets and TCP/UDP/UNIX sockets, enabling easy integration with legacy services without code changes, as shown in the TCP-to-WebSocket proxy example.
Supports text/binary modes, auto-reconnect, broadcast, and JSON-RPC formatting, making it ideal for complex tasks like automating Chrome DevTools Protocol interactions.
Executes external programs and pipes stdin/stdout to WebSocket connections, allowing scripting and automation directly from the command line, as highlighted in the exec: specifier.
Offers pre-built binaries for Linux, Windows, macOS, and Android, ensuring easy deployment across diverse environments without compilation hassles.
The stable v1 version relies on obsolete dependencies with security warnings, and the build process is fragile, complicating maintenance and updates, as noted in the Rust version compatibility table.
Only supports HTTP/1 for WebSockets, not HTTP/2 or newer RFCs, restricting its use in modern web applications that require advanced WebSocket features.
Does not properly handle closed socket notifications, leading to potential socket leaks in serving modes unless specific flags like -E or -u are used, as admitted in the limitations section.