Небольшая CLI-утилита, которая превращает любую программу со STDIN/STDOUT в WebSocket-сервер, как inetd для WebSocket.
lxzan/gws
Минималистичная событийная библиотека WebSocket для Go с поддержкой сервера и клиента, permessage-deflate, TCP, KCP и Unix-сокетов.
- Звёзды
- 1,808
- Форки
- 122
- Открытые issues
- 0
- Последний коммит
- в прошлом месяце
Что это?
GWS (Go WebSocket) — библиотека WebSocket для Go с компактным интерфейсом событий и колбэками OnOpen, OnMessage, OnClose, OnPing и OnPong. Для каждой связи запускается отдельная горутина, которая обрабатывает цикл событий: прикладной код сосредоточен на бизнес-логике, а детали протокола остаются скрытыми.
Помимо базового API, библиотека предоставляет Broadcaster, который сжимает фрейм один раз перед рассылкой множеству соединений, поддержку context takeover для permessage-deflate с настраиваемым размером окна и хук Dialer для подключения через SOCKS5- или HTTP-прокси. Она также работает поверх KCP и Unix domain sockets, поддерживает асинхронную запись без блокировок и запись сегментов файлов, а для чтения сообщений предлагает ReadLoop, ReadMessage и NextReader.
Проект нацелен на соответствие RFC 6455 и RFC 7692 и сообщает об успешном прохождении набора тестов Autobahn. Он предназначен для серверов с большим количеством долгоживущих соединений — например, шлюзов, чатов, игр и сервисов push-уведомлений.
Ключевые возможности
- 01Событийный API на основе колбэков OnOpen, OnMessage, OnClose, OnPing и OnPong.
- 02Broadcaster сжимает сообщение один раз перед рассылкой множеству соединений.
- 03permessage-deflate с context takeover и настраиваемым размером скользящего окна.
- 04Подключение через SOCKS5- или HTTP-прокси с помощью собственного Dialer.
- 05Работа поверх TCP, KCP и Unix domain sockets.
- 06Асинхронная запись без блокировок и запись сегментов файлов.
Сценарии использования
- Создание серверной части чатов и систем мгновенных сообщений реального времени на Go.
- Запуск API-шлюзов или хабов с большим количеством открытых долгоживущих соединений.
- Рассылка обновлений в реальном времени или сообщений pub/sub клиентам в браузерах и приложениях.
- Создание WebSocket-клиентов, подключающихся через SOCKS5-прокси.
Быстрый старт
- 1
Установите библиотеку с помощью Go
go get -v github.com/lxzan/gws@latest - 2
Создайте файл main.go с кодом из раздела Quick Start и запустите сервер на порту 6666
Что важно знать
- Требуется Go версии 1.18 или новее.
Темы
Частые вопросы
- Что такое gws?
- Минималистичная событийная библиотека WebSocket для Go с поддержкой сервера и клиента, permessage-deflate, TCP, KCP и Unix-сокетов. GWS (Go WebSocket) — библиотека WebSocket для Go с компактным интерфейсом событий и колбэками OnOpen, OnMessage, OnClose, OnPing и OnPong. Для каждой связи запускается отдельная горутина, которая обрабатывает цикл событий: прикладной код сосредоточен на бизнес-логике, а детали протокола остаются скрытыми.
- gws можно использовать бесплатно? Какая у него лицензия?
- gws распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- gws всё ещё поддерживается?
- Обновлялся за последние 6 месяцев. Последний коммит в gws — 11 сент. 2026 г..
- Для чего можно использовать gws?
- Создание серверной части чатов и систем мгновенных сообщений реального времени на Go. Запуск API-шлюзов или хабов с большим количеством открытых долгоживущих соединений. Рассылка обновлений в реальном времени или сообщений pub/sub клиентам в браузерах и приложениях. Создание WebSocket-клиентов, подключающихся через SOCKS5-прокси.
- Как установить gws?
- Установите библиотеку с помощью Go: go get -v github.com/lxzan/gws@latest Создайте файл main.go с кодом из раздела Quick Start и запустите сервер на порту 6666
- Где скачать gws?
- Исходный код и инструкции по установке — на GitHub: https://github.com/lxzan/gws
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Консольный клиент и сервер WebSocket — netcat, curl и socat для подключений ws:// и wss://.
Lila — сервер на Scala, на котором работает lichess.org: бесплатная шахматная онлайн-платформа без рекламы с открытым исходным кодом.
Инструмент для Windows, который объединяет несколько сетевых адаптеров и распределяет трафик загрузки между подключениями.
PHP-расширение с событийным сетевым движком и средой выполнения корутин для создания постоянно работающих TCP-, UDP-, HTTP- и WebSocket-сервисов.
Кроссплатформенный событийный сетевой фреймворк на Swift с неблокирующим вводом-выводом для высокопроизводительных серверов и клиентов протоколов, аналог Netty.