Минималистичная CLI-утилита на Rust, которая открывает локальный TCP-порт на удалённом сервере, делая сервисы localhost доступными из интернета.
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
Установите на macOS с помощью Homebrew
brew install websocketd - 2
Или скачайте отдельный исполняемый файл для своей ОС со страницы установки
- 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 обновляется ежедневно.
Похожие проекты
Кроссплатформенный событийный сетевой фреймворк на Swift с неблокирующим вводом-выводом для высокопроизводительных серверов и клиентов протоколов, аналог Netty.
Инструмент для Windows, который объединяет несколько сетевых адаптеров и распределяет трафик загрузки между подключениями.
Интерактивный прокси для перехвата HTTP-трафика с поддержкой TLS и интерфейсами для консоли, командной строки и браузера.
Быстрый, не навязывающий подходов минималистичный веб-фреймворк для Node.js, предназначенный для создания веб-приложений и HTTP API.
Прогрессивный фреймворк для Node.js, позволяющий создавать эффективные и масштабируемые серверные приложения на TypeScript или JavaScript.