Una pequeña herramienta CLI que convierte cualquier programa STDIN/STDOUT en un servidor WebSocket, como inetd para WebSockets.
lxzan/gws
Biblioteca mínima y orientada a eventos de servidor y cliente WebSocket para Go, con permessage-deflate y compatibilidad con TCP, KCP y sockets Unix.
- Estrellas
- 1,808
- Forks
- 122
- Issues abiertos
- 0
- Último commit
- el mes pasado
¿Qué es?
GWS (Go WebSocket) es una biblioteca WebSocket para Go basada en una interfaz de eventos sencilla con las callbacks OnOpen, OnMessage, OnClose, OnPing y OnPong. Cada conexión ejecuta su propio goroutine para gestionar el bucle de eventos, lo que permite que el código de la aplicación se centre en la lógica de negocio y deja ocultos los detalles del protocolo.
Además de la API básica, ofrece un Broadcaster que comprime una trama una sola vez para distribuirla a muchas conexiones, context takeover para permessage-deflate con tamaños de ventana configurables y un hook de Dialer para conectarse a través de proxies SOCKS5 o HTTP. También puede funcionar sobre KCP y sockets de dominio Unix, y ofrece escrituras asíncronas no bloqueantes, escritura de segmentos de archivos y varias opciones para leer mensajes: ReadLoop, ReadMessage o NextReader.
El proyecto busca cumplir con RFC 6455 y RFC 7692 e indica que supera la suite de pruebas Autobahn. Está pensado para servidores que mantienen muchas conexiones abiertas durante largos periodos, como gateways, servicios de chat, juegos y servicios de notificaciones push.
Funciones clave
- 01API orientada a eventos basada en las callbacks OnOpen, OnMessage, OnClose, OnPing y OnPong.
- 02Broadcaster que comprime un mensaje una sola vez para distribuirlo a muchas conexiones.
- 03permessage-deflate con context takeover y tamaños configurables de ventana deslizante.
- 04Conexión a través de proxies SOCKS5 o HTTP mediante un Dialer personalizado.
- 05Funciona sobre TCP, KCP y sockets de dominio Unix.
- 06Escrituras asíncronas no bloqueantes y escritura de archivos por segmentos.
Casos de uso
- Crear backends de chat en tiempo real o mensajería instantánea en Go.
- Implementar gateways de API o hubs que mantengan abiertas muchas conexiones de larga duración.
- Enviar actualizaciones en tiempo real o mensajes pub/sub a clientes de navegador o aplicaciones.
- Crear clientes WebSocket que se conecten a través de un proxy SOCKS5.
Inicio rápido
- 1
Instala la biblioteca con Go
go get -v github.com/lxzan/gws@latest - 2
Crea un main.go con el código de Quick Start y ejecuta el servidor en el puerto 6666
Antes de usarlo
- Requiere Go 1.18 o una versión posterior.
Temas
Preguntas frecuentes
- ¿Qué es gws?
- Biblioteca mínima y orientada a eventos de servidor y cliente WebSocket para Go, con permessage-deflate y compatibilidad con TCP, KCP y sockets Unix. GWS (Go WebSocket) es una biblioteca WebSocket para Go basada en una interfaz de eventos sencilla con las callbacks OnOpen, OnMessage, OnClose, OnPing y OnPong. Cada conexión ejecuta su propio goroutine para gestionar el bucle de eventos, lo que permite que el código de la aplicación se centre en la lógica de negocio y deja ocultos los detalles del protocolo.
- ¿gws es gratuito? ¿Qué licencia tiene?
- gws es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿gws sigue mantenido?
- Actualizado en los últimos 6 meses. El último commit de gws fue el 11 sept 2026.
- ¿Para qué puedo usar gws?
- Crear backends de chat en tiempo real o mensajería instantánea en Go. Implementar gateways de API o hubs que mantengan abiertas muchas conexiones de larga duración. Enviar actualizaciones en tiempo real o mensajes pub/sub a clientes de navegador o aplicaciones. Crear clientes WebSocket que se conecten a través de un proxy SOCKS5.
- ¿Cómo se instala gws?
- Instala la biblioteca con Go: go get -v github.com/lxzan/gws@latest Crea un main.go con el código de Quick Start y ejecuta el servidor en el puerto 6666
- ¿Dónde consigo gws?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/lxzan/gws
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Cliente y servidor WebSocket de línea de comandos, como netcat, curl y socat para conexiones ws:// y wss://.
Lila, el servidor de Scala detrás de lichess.org, una plataforma de ajedrez en línea gratuita, sin anuncios y de código abierto.
Herramienta para Windows que combina varios adaptadores de red (Ethernet, Wi-Fi, hotspot y tethering USB) para repartir las descargas entre varias conexiones.
Extensión de PHP que ofrece un motor de red basado en eventos y un entorno de ejecución de corutinas para crear servicios persistentes de TCP, UDP, HTTP y WebSocket.
Framework de networking multiplataforma, no bloqueante y orientado a eventos, escrito en Swift para crear servidores y clientes de protocolos de alto rendimiento, similar a Netty.