Sobre o projeto

websocketd oferece uma maneira simples de expor programas de linha de comando existentes por WebSockets sem exigir bibliotecas de rede no próprio programa. Após iniciar em uma porta escolhida, ele aceita conexões WebSocket e lança o executável configurado para cada conexão. As mensagens do navegador são gravadas no STDIN do processo com uma nova linha ao final, enquanto a saída STDOUT terminada por nova linha é retornada ao cliente como mensagens WebSocket. Quando qualquer um dos lados se desconecta, o processo associado e seu grupo de processos são encerrados. O programa de backend pode ser escrito em qualquer linguagem que suporte entrada e saída padrão, incluindo scripts de shell, Python, Ruby, Perl, C, Go, PHP, Java, PowerShell, Lua e R. Informações da requisição, como host remoto, caminho, parâmetros de consulta e cookies, são expostas aos scripts por meio de variáveis de ambiente CGI. Recursos adicionais incluem um servidor de arquivos estáticos, suporte clássico a CGI, escuta em um soquete de domínio Unix com permissões configuráveis, encaminhamento opcional de STDERR como JSON marcado e um console de desenvolvedor WebSocket integrado para conectar, enviar quadros e inspecionar respostas. A ferramenta é distribuída como um único executável autônomo para Linux, macOS e Windows, com instalação via Homebrew disponível no macOS. O repositório também contém links para exemplos e projetos de amostra envolvendo estatísticas de sistema em tempo real, REPLs baseados em navegador, acesso a banco de dados, listagem de arquivos e entrada de gamepad.