Repolode
joewalnes

joewalnes/websocketd

Небольшая CLI-утилита, которая превращает любую программу со STDIN/STDOUT в WebSocket-сервер, как inetd для WebSocket.

Звёзды
17,459
Форки
1,009
Открытые issues
1
Последний коммит
в прошлом месяце

Что это?

websocketd позволяет предоставить доступ к существующей программе командной строки через WebSocket без написания сетевого кода. Когда подключается клиент, websocketd запускает программу, передаёт каждое входящее сообщение в её STDIN с добавлением символа новой строки и отправляет клиенту каждую строку, которую программа выводит в STDOUT, в виде WebSocket-сообщения. При закрытии соединения процесс останавливается.

Поскольку интерфейс ограничен стандартными потоками, один и тот же скрипт работает без изменений в терминале, в shell-конвейере или как WebSocket endpoint. Проект распространяется в виде одного исполняемого файла для Linux, macOS и Windows. Помимо WebSocket-сервера, в него входят статический файловый сервер и CGI-сервер; он передаёт переменные окружения CGI с описанием запроса и предоставляет встроенную консоль разработчика для тестирования кадров в браузере.

Поддерживаются прослушивание Unix domain socket, необязательная передача STDERR с тегами JSON и завершение всей группы процессов при отключении клиента.

Ключевые возможности

  • 01Превращает любую программу, которая читает из STDIN и пишет в STDOUT, в WebSocket endpoint.
  • 02Поставляется в виде одного исполняемого файла для Linux, macOS и Windows без внешних зависимостей.
  • 03Передаёт сведения об HTTP-запросе скриптам через переменные окружения CGI.
  • 04Включает статический файловый сервер и классический CGI-сервер.
  • 05Может прослушивать TCP- или Unix domain socket и при необходимости передавать STDERR.
  • 06Предоставляет встроенную консоль разработчика для отправки кадров и просмотра их содержимого.

Сценарии использования

  • Создание прототипа браузерного интерфейса для существующего shell-скрипта или CLI-утилиты.
  • Передача системных данных в реальном времени, например логов или статистики vmstat, на веб-панель.
  • Быстрое создание браузерного REPL для интерпретатора командной строки.
  • Тестирование обработки WebSocket-сообщений в скрипте до написания JavaScript-клиента.

Быстрый старт

  1. 1

    Установите на macOS с помощью Homebrew

    brew install websocketd
  2. 2

    Или скачайте отдельный исполняемый файл для своей ОС со страницы установки

  3. 3

    Сохраните скрипт, например count.sh, и запустите его как WebSocket-сервер на порту 8080

    websocketd --port=8080 ./count.sh

Что важно знать

  • Установка через Homebrew одной командой доступна только на macOS; в других системах файл нужно скачать вручную.

Темы

Частые вопросы

Что такое websocketd?
Небольшая CLI-утилита, которая превращает любую программу со STDIN/STDOUT в WebSocket-сервер, как inetd для WebSocket. websocketd позволяет предоставить доступ к существующей программе командной строки через WebSocket без написания сетевого кода. Когда подключается клиент, websocketd запускает программу, передаёт каждое входящее сообщение в её STDIN с добавлением символа новой строки и отправляет клиенту каждую строку, которую программа выводит в STDOUT, в виде WebSocket-сообщения. При закрытии соединения процесс останавливается.
websocketd можно использовать бесплатно? Какая у него лицензия?
websocketd распространяется с открытым исходным кодом под лицензией BSD-2-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
websocketd всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в websocketd — 7 сент. 2026 г..
Для чего можно использовать websocketd?
Создание прототипа браузерного интерфейса для существующего shell-скрипта или CLI-утилиты. Передача системных данных в реальном времени, например логов или статистики vmstat, на веб-панель. Быстрое создание браузерного REPL для интерпретатора командной строки. Тестирование обработки WebSocket-сообщений в скрипте до написания JavaScript-клиента.
Как установить websocketd?
Установите на macOS с помощью Homebrew: brew install websocketd Или скачайте отдельный исполняемый файл для своей ОС со страницы установки Сохраните скрипт, например count.sh, и запустите его как WebSocket-сервер на порту 8080: websocketd --port=8080 ./count.sh
Где скачать websocketd?
Исходный код и инструкции по установке — на GitHub: https://github.com/joewalnes/websocketd

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

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