gwsocket 은 C로 작성된 단순하고 독립형이며 언어에 구애받지 않는 RFC6455 호환 WebSocket 서버입니다. 이는 애플리케이션과 클라이언트 브라우저 사이에 위치하여 쉽고 유연하게 이 둘 사이의 빠른 양방향 통신을 제공합니다. 자세한 내용은 https://gwsocket.io를 참조하세요.
매우 간단합니다. 애플리케이션 (stdout) 의 출력을 stdin
또는 파일(named Pipe)로 리디렉션하고 gwsocket이 데이터를 브라우저로 전송하도록 하면 됩니다. 그게 전부입니다.
예를 들어 서버 로그를 브라우저로 추적하는 것은 이보다 더 쉬울 수 없습니다.
# tail -f /var/log/nginx/access.log > /tmp/wspipein.fifo
또는
# tail -f /var/log/nginx/access.log | gwsocket
클라이언트의 데이터를 응용 프로그램 (stdin) 으로 가져올 수도 있습니다. 실제로, 당신이 선호하는 ncurses 프로그램의 출력을 브라우저로 보낼 수도 있습니다. 위의 스크린캐스트를 참조하세요.
저는 빠르고 단순 하며 라이브러리가 없고 C 로 작성된 RFC6455 호환 WebSocket 서버가 필요했습니다. 이 서버는 단순히 데이터를 들어오고 나가는 방식으로 GoAccess 버전 1.0에 사용할 수 있었습니다. WebSocket을 사용하면 쉬워졌습니다!
gwsocket은 언어에 구애받지 않습니다. 브라우저에서 데이터를 수신하는 방법과 이를 브라우저로 보내는 방법에 대한 자세한 내용과 예제는 매뉴얼 페이지를 참조하세요.
gwsocket 설치는 매우 쉽습니다. 다음을 사용하여 다운로드하고 추출하고 컴파일하십시오.
$ wget https://tar.gwsocket.io/gwsocket-0.4.tar.gz
$ tar -xzvf gwsocket-0.4.tar.gz
$ cd gwsocket-0.4/
$ ./configure
$ make
# make install
종속성이 필요하지 않습니다. 얼마나 멋지지 않나요 :) 거의, gcc
, make
등이 필요합니다.
$ git clone s://github.com/allinurl/gwsocket.git
$ cd gwsocket
$ autoreconf -fiv
$ ./configure
$ make
# make install
애플리케이션과 클라이언트 브라우저 사이에 채널을 설정하기 위해 gwsocket은 사용자가 데이터를 주고받을 수 있는 두 가지 방법을 제공합니다. 첫 번째는 표준 입력(stdin)과 표준 출력(stdout)을 사용하는 것입니다. 두 번째 방법은 고정 크기 헤더와 페이로드를 사용하는 것입니다. 자세한 내용은 아래 옵션을 참조하세요.
표준 입출력은 클라이언트와 데이터를 주고받는 가장 간단한 방법입니다. 그러나 모든 클라이언트에게 메시지를 브로드캐스팅하는 것으로 제한됩니다. 특정 클라이언트와 메시지를 보내거나 받으려면 다음 섹션에서 엄격 모드를 사용하세요. 여기에서 언어별 예를 참조하세요.
gwsocket은 데이터 전송/수신을 위해 자체적인 작은 프로토콜을 구현합니다. stdin/stdout 모드와 달리 strict 모드를 사용하면 연결된 특정 클라이언트와 데이터를 주고받을 수 있을 뿐만 아니라 누가 WebSocket 연결을 열거나 닫았는지 추적할 수 있습니다. 또한 단일 메시지에 원하는 만큼의 데이터를 압축하여 보낼 수 있는 기능도 제공합니다. 여기에서 언어별 예를 참조하세요.
명령줄에 다음 옵션을 제공할 수 있습니다.
명령줄 옵션 | 설명 |
---|---|
-p --port | 바인딩할 포트를 지정합니다. |
-h --help | 명령줄 도움말. |
-V --version | 버전 정보를 표시하고 종료합니다. |
--access-log=<path/file> | 액세스 로그의 경로/파일을 지정합니다. |
--addr=<addr> | 바인딩할 주소를 지정합니다. |
--echo-mode | 수신된 모든 메시지를 에코하도록 서버를 설정합니다. |
--max-frame-size=<bytes> | 웹소켓 프레임의 최대 크기입니다. |
--origin=<origin> | 클라이언트가 핸드셰이크 시 지정된 원본 헤더를 전송하는지 확인하세요. |
--pipein=<path/file> | 지정된 경로/파일에서 읽는 명명된 파이프(FIFO)를 생성합니다. |
--pipeout=<path/file> | 지정된 경로/파일에 쓰는 명명된 파이프(FIFO)를 생성합니다. |
--std | --stdin 및 --stdout 활성화합니다. |
--stdin | 웹소켓에 stdin을 보냅니다. |
--stdout | 수신된 웹소켓 데이터를 stdout으로 보냅니다. |
--strict | 엄격 모드를 사용하여 메시지를 구문 분석합니다. 자세한 내용은 매뉴얼 페이지를 참조하십시오. |
--ssl-cert=<cert.crt> | SSL 인증서의 경로입니다. |
--ssl-key=<priv.key> | SSL 개인 키의 경로입니다. |
--unix-socket=<addr> | 서버를 바인딩할 UNIX 도메인 소켓 주소를 지정합니다. |
epoll
및 kqueue
지원MIT 라이센스
gwsocket에 대한 도움을 환영합니다. 가장 도움이 되는 방법은 직접 사용해 보고 피드백을 주는 것입니다. Github 문제 추적기와 풀 요청을 사용하여 코드 변경 사항에 대해 논의하고 제출하세요.
즐기다!