Uma pequena ferramenta CLI que transforma qualquer programa de STDIN/STDOUT em um servidor WebSocket, como o inetd para WebSockets.
lxzan/gws
Biblioteca minimalista e orientada a eventos de WebSocket para Go, com permessage-deflate e suporte a TCP, KCP e sockets Unix.
- Estrelas
- 1,808
- Forks
- 122
- Issues abertas
- 0
- Último commit
- mês passado
O que é?
GWS (Go WebSocket) é uma biblioteca de WebSocket para Go baseada em uma interface de eventos enxuta, com callbacks OnOpen, OnMessage, OnClose, OnPing e OnPong. Cada conexão executa sua própria goroutine para conduzir o loop de eventos, mantendo o código da aplicação focado na lógica de negócio e ocultando os detalhes do protocolo.
Além da API básica, oferece um Broadcaster que comprime um frame uma única vez para distribuí-lo a várias conexões, context takeover para permessage-deflate com tamanhos de janela configuráveis e um hook de Dialer para conexões por meio de proxies SOCKS5 ou HTTP. Também pode operar sobre KCP e sockets de domínio Unix, além de oferecer gravações assíncronas não bloqueantes, gravações de segmentos de arquivos e as opções ReadLoop, ReadMessage ou NextReader para ler mensagens.
O projeto busca atender às especificações RFC 6455 e RFC 7692 e informa que passou na suíte de testes Autobahn. É voltado a servidores que mantêm muitas conexões abertas por longos períodos, como gateways, serviços de chat, jogos e serviços de push.
Recursos principais
- 01API orientada a eventos baseada nos callbacks OnOpen, OnMessage, OnClose, OnPing e OnPong.
- 02Broadcaster que comprime uma mensagem uma única vez para distribuí-la a várias conexões.
- 03permessage-deflate com context takeover e tamanhos configuráveis para a janela deslizante.
- 04Conexões por meio de proxies SOCKS5 ou HTTP usando um Dialer personalizado.
- 05Opera sobre TCP, KCP e sockets de domínio Unix.
- 06Gravações assíncronas não bloqueantes e gravação segmentada de arquivos.
Casos de uso
- Criar backends de chat em tempo real ou mensagens instantâneas em Go.
- Executar gateways de API ou hubs que mantêm muitas conexões abertas por longos períodos.
- Enviar atualizações em tempo real ou mensagens pub/sub para clientes de navegador ou aplicativos.
- Criar clientes WebSocket que se conectam por meio de um proxy SOCKS5.
Início rápido
- 1
Instale a biblioteca com Go
go get -v github.com/lxzan/gws@latest - 2
Crie um main.go com o código do Quick Start e execute o servidor na porta 6666
Antes de usar
- Requer Go 1.18 ou posterior.
Tópicos
Perguntas frequentes
- O que é gws?
- Biblioteca minimalista e orientada a eventos de WebSocket para Go, com permessage-deflate e suporte a TCP, KCP e sockets Unix. GWS (Go WebSocket) é uma biblioteca de WebSocket para Go baseada em uma interface de eventos enxuta, com callbacks OnOpen, OnMessage, OnClose, OnPing e OnPong. Cada conexão executa sua própria goroutine para conduzir o loop de eventos, mantendo o código da aplicação focado na lógica de negócio e ocultando os detalhes do protocolo.
- gws é gratuito? Qual é a licença?
- gws é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
- gws ainda é mantido?
- Atualizado nos últimos 6 meses. O último commit de gws foi em 11 de set. de 2026.
- Para que posso usar gws?
- Criar backends de chat em tempo real ou mensagens instantâneas em Go. Executar gateways de API ou hubs que mantêm muitas conexões abertas por longos períodos. Enviar atualizações em tempo real ou mensagens pub/sub para clientes de navegador ou aplicativos. Criar clientes WebSocket que se conectam por meio de um proxy SOCKS5.
- Como instalar gws?
- Instale a biblioteca com Go: go get -v github.com/lxzan/gws@latest Crie um main.go com o código do Quick Start e execute o servidor na porta 6666
- Onde consigo gws?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/lxzan/gws
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Cliente e servidor WebSocket de linha de comando, como netcat, curl e socat para conexões ws:// e wss://.
Lila, o servidor em Scala por trás do lichess.org, uma plataforma de xadrez online gratuita, sem anúncios e de código aberto.
Ferramenta para Windows que agrega vários adaptadores de rede (Ethernet, Wi-Fi, hotspot e tethering USB) para distribuir downloads entre as conexões.
Extensão PHP que oferece um mecanismo de rede orientado a eventos e um runtime de corrotinas para criar serviços TCP, UDP, HTTP e WebSocket de longa duração.
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.