Repolode
lxzan

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

    Установите библиотеку с помощью Go

    go get -v github.com/lxzan/gws@latest
  2. 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 обновляется ежедневно.

Похожие проекты