로컬 TCP 포트를 원격 서버로 연결해 localhost 서비스를 공개 인터넷에서 이용하게 하는 간결한 Rust CLI입니다.
joewalnes/websocketd
STDIN/STDOUT을 사용하는 프로그램을 WebSocket 서버로 감싸는, WebSocket용 inetd 같은 소형 CLI 도구입니다.
- 스타
- 17,459
- 포크
- 1,009
- 열린 이슈
- 1
- 마지막 커밋
- 2개월 전
어떤 프로젝트인가요?
websocketd를 사용하면 네트워킹 코드를 작성하지 않고도 기존 명령줄 프로그램을 WebSocket으로 노출할 수 있습니다. 클라이언트가 연결되면 프로그램을 실행하고, 들어오는 각 메시지 뒤에 줄바꿈을 붙여 프로그램의 STDIN으로 전달합니다. 프로그램이 STDOUT에 출력하는 각 줄은 WebSocket 메시지로 클라이언트에 보냅니다. 연결이 끊기면 프로세스를 종료합니다.
인터페이스가 표준 스트림뿐이므로 같은 스크립트를 터미널이나 셸 파이프라인에서 실행하거나 WebSocket 엔드포인트로 제공해도 수정할 필요가 없습니다. 이 프로젝트는 Linux, macOS, Windows용 단일 실행 파일로 배포됩니다. WebSocket 서버 기능 외에도 정적 파일 서버와 CGI 서버를 포함하고, 요청 정보를 담은 CGI 환경 변수를 제공하며, 브라우저에서 프레임을 테스트할 수 있는 개발자 콘솔을 내장합니다.
Unix 도메인 소켓에서 수신 대기할 수 있고, STDERR을 JSON 태그와 함께 선택적으로 전달할 수 있습니다. 클라이언트 연결이 끊기면 프로세스 그룹 전체를 종료합니다.
핵심 기능
- 01STDIN을 읽고 STDOUT에 쓰는 프로그램을 WebSocket 엔드포인트로 감쌉니다.
- 02외부 의존성 없이 Linux, macOS, Windows용 단일 실행 파일로 제공됩니다.
- 03CGI 환경 변수를 통해 HTTP 요청 정보를 스크립트에 전달합니다.
- 04정적 파일 서버와 전통적인 CGI 서버를 포함합니다.
- 05TCP 또는 Unix 도메인 소켓에서 수신 대기할 수 있으며, STDERR을 선택적으로 전달합니다.
- 06프레임을 전송하고 확인할 수 있는 개발자 콘솔을 내장합니다.
활용 사례
- 기존 셸 스크립트나 CLI 도구용 브라우저 프런트엔드를 빠르게 프로토타이핑할 때.
- 로그나 vmstat 통계 같은 시스템 출력을 웹 대시보드로 실시간 스트리밍할 때.
- 명령줄 인터프리터를 감싸는 브라우저 기반 REPL을 빠르게 만들 때.
- JavaScript 클라이언트를 작성하기 전에 스크립트의 WebSocket 메시지 처리를 테스트할 때.
빠른 시작
- 1
Homebrew를 사용해 macOS에 설치하기
brew install websocketd - 2
또는 설치 페이지에서 사용 중인 OS용 단일 실행 파일 다운로드하기
- 3
count.sh와 같은 스크립트를 저장하고 포트 8080에서 WebSocket 서버로 실행하기
websocketd --port=8080 ./count.sh
사용 전 알아둘 점
- Homebrew를 통한 설치가 한 줄로 끝나는 것은 macOS뿐입니다. 다른 시스템에서는 수동으로 다운로드해야 합니다.
포함된 컬렉션
토픽
자주 묻는 질문
- websocketd은(는) 무엇인가요?
- STDIN/STDOUT을 사용하는 프로그램을 WebSocket 서버로 감싸는, WebSocket용 inetd 같은 소형 CLI 도구입니다. websocketd를 사용하면 네트워킹 코드를 작성하지 않고도 기존 명령줄 프로그램을 WebSocket으로 노출할 수 있습니다. 클라이언트가 연결되면 프로그램을 실행하고, 들어오는 각 메시지 뒤에 줄바꿈을 붙여 프로그램의 STDIN으로 전달합니다. 프로그램이 STDOUT에 출력하는 각 줄은 WebSocket 메시지로 클라이언트에 보냅니다. 연결이 끊기면 프로세스를 종료합니다.
- websocketd은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- websocketd은(는) BSD-2-Clause 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- websocketd은(는) 아직 유지보수되고 있나요?
- 6개월 이내 업데이트. websocketd의 마지막 커밋은 2026년 9월 7일입니다.
- websocketd은(는) 어디에 사용할 수 있나요?
- 기존 셸 스크립트나 CLI 도구용 브라우저 프런트엔드를 빠르게 프로토타이핑할 때. 로그나 vmstat 통계 같은 시스템 출력을 웹 대시보드로 실시간 스트리밍할 때. 명령줄 인터프리터를 감싸는 브라우저 기반 REPL을 빠르게 만들 때. JavaScript 클라이언트를 작성하기 전에 스크립트의 WebSocket 메시지 처리를 테스트할 때.
- websocketd는 어떻게 설치하나요?
- Homebrew를 사용해 macOS에 설치하기: brew install websocketd 또는 설치 페이지에서 사용 중인 OS용 단일 실행 파일 다운로드하기 count.sh와 같은 스크립트를 저장하고 포트 8080에서 WebSocket 서버로 실행하기: websocketd --port=8080 ./count.sh
- websocketd은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/joewalnes/websocketd
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
Netty와 유사한 고성능 프로토콜 서버와 클라이언트를 구축하기 위한 크로스 플랫폼 Swift 비동기 이벤트 기반 네트워킹 프레임워크입니다.
여러 네트워크 어댑터(Ethernet, Wi-Fi, 핫스팟, USB 테더링)의 다운로드 트래픽을 연결별로 분산하는 Windows 도구입니다.
HTTP/1, HTTP/2, WebSocket 트래픽을 검사하는 콘솔·명령줄·웹 인터페이스를 갖춘 TLS 지원 인터셉팅 HTTP 프록시입니다.
웹 앱과 HTTP API 구축을 위한 빠르고 유연한 미니멀 Node.js 웹 프레임워크입니다.
TypeScript 또는 JavaScript로 효율적이고 확장 가능한 서버 측 애플리케이션을 구축하는 진보적인 Node.js 프레임워크입니다.