Uma CLI minimalista em Rust que expõe uma porta TCP local por meio de um servidor remoto, permitindo acessar serviços do localhost pela internet pública.
joewalnes/websocketd
Uma pequena ferramenta CLI que transforma qualquer programa de STDIN/STDOUT em um servidor WebSocket, como o inetd para WebSockets.
- Estrelas
- 17,459
- Forks
- 1,009
- Issues abertas
- 1
- Último commit
- há 2 meses
O que é?
websocketd permite disponibilizar um programa de linha de comando existente via WebSocket sem escrever código de rede. Quando um cliente se conecta, a ferramenta inicia o programa, encaminha cada mensagem recebida para o STDIN do programa, seguida de uma quebra de linha, e envia de volta ao cliente, como mensagem WebSocket, cada linha que o programa escreve no STDOUT. Quando a conexão é encerrada, o processo é finalizado.
Como a interface usa apenas os fluxos padrão, o mesmo script roda sem alterações no terminal, em um pipeline de shell ou como endpoint WebSocket. O projeto é distribuído como um único executável para Linux, macOS e Windows. Além de servir via WebSocket, inclui um servidor de arquivos estáticos e um servidor CGI, expõe variáveis de ambiente CGI que descrevem a requisição e oferece um console de desenvolvimento integrado para testar frames no navegador.
É compatível com conexões por Unix domain socket, encaminhamento opcional de STDERR com marcação em JSON e encerramento de todo o grupo de processos quando um cliente se desconecta.
Recursos principais
- 01Transforma qualquer programa que lê do STDIN e escreve no STDOUT em um endpoint WebSocket.
- 02É distribuído como um único executável para Linux, macOS e Windows, sem dependências externas.
- 03Passa detalhes das requisições HTTP para os scripts por meio de variáveis de ambiente CGI.
- 04Inclui um servidor de arquivos estáticos e um servidor CGI clássico.
- 05Pode escutar em sockets TCP ou Unix domain sockets e encaminhar STDERR opcionalmente.
- 06Oferece um console de desenvolvimento integrado para enviar e inspecionar frames.
Casos de uso
- Criar um protótipo de front-end no navegador para um script de shell ou uma ferramenta CLI existente.
- Transmitir dados do sistema em tempo real, como logs ou estatísticas do vmstat, para um painel web.
- Criar rapidamente um REPL no navegador em torno de um interpretador de linha de comando.
- Testar o tratamento de mensagens WebSocket em um script antes de escrever um cliente JavaScript.
Início rápido
- 1
Instale no macOS com o Homebrew
brew install websocketd - 2
Ou baixe o executável único para seu sistema operacional na página de instalação
- 3
Salve um script como count.sh e execute-o como servidor WebSocket na porta 8080
websocketd --port=8080 ./count.sh
Antes de usar
- A instalação pelo Homebrew é feita com um único comando apenas no macOS; nos outros sistemas, é preciso baixar manualmente.
Tópicos
Perguntas frequentes
- O que é websocketd?
- Uma pequena ferramenta CLI que transforma qualquer programa de STDIN/STDOUT em um servidor WebSocket, como o inetd para WebSockets. websocketd permite disponibilizar um programa de linha de comando existente via WebSocket sem escrever código de rede. Quando um cliente se conecta, a ferramenta inicia o programa, encaminha cada mensagem recebida para o STDIN do programa, seguida de uma quebra de linha, e envia de volta ao cliente, como mensagem WebSocket, cada linha que o programa escreve no STDOUT. Quando a conexão é encerrada, o processo é finalizado.
- websocketd é gratuito? Qual é a licença?
- websocketd é open source sob a licença BSD-2-Clause. Confira os termos da licença antes de usá-lo em produtos comerciais.
- websocketd ainda é mantido?
- Atualizado nos últimos 6 meses. O último commit de websocketd foi em 7 de set. de 2026.
- Para que posso usar websocketd?
- Criar um protótipo de front-end no navegador para um script de shell ou uma ferramenta CLI existente. Transmitir dados do sistema em tempo real, como logs ou estatísticas do vmstat, para um painel web. Criar rapidamente um REPL no navegador em torno de um interpretador de linha de comando. Testar o tratamento de mensagens WebSocket em um script antes de escrever um cliente JavaScript.
- Como instalar websocketd?
- Instale no macOS com o Homebrew: brew install websocketd Ou baixe o executável único para seu sistema operacional na página de instalação Salve um script como count.sh e execute-o como servidor WebSocket na porta 8080: websocketd --port=8080 ./count.sh
- Onde consigo websocketd?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/joewalnes/websocketd
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Framework de rede multiplataforma e não bloqueante, baseado em eventos e escrito em Swift, para criar servidores e clientes de protocolos de alto desempenho, semelhante ao Netty.
Ferramenta para Windows que agrega vários adaptadores de rede (Ethernet, Wi-Fi, hotspot e tethering USB) para distribuir downloads entre as conexões.
Proxy HTTP interativo com suporte a TLS, que permite interceptar e inspecionar tráfego HTTP/1, HTTP/2 e WebSocket por interfaces de console, linha de comando e web.
Framework web rápido, minimalista e sem impor opiniões para Node.js, voltado à criação de aplicações web e APIs HTTP.
Um framework progressivo para Node.js, voltado à criação de aplicações server-side eficientes e escaláveis em TypeScript ou JavaScript.