Repolode
lxzan

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. 1

    Instala la biblioteca con Go

    go get -v github.com/lxzan/gws@latest
  2. 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