gwsocket是一個簡單、獨立、與語言無關、符合RFC6455 的WebSocket 伺服器,用C 語言編寫。 。更多資訊請見:https://gwsocket.io。
非常簡單,只需將應用程式(stdout)的輸出重新導向到stdin
或檔案(命名管道),然後讓gwsocket將資料傳輸到瀏覽器 - 就是這樣。
例如,將伺服器日誌追蹤到瀏覽器中再簡單不過了
# tail -f /var/log/nginx/access.log > /tmp/wspipein.fifo
或者
# tail -f /var/log/nginx/access.log | gwsocket
您也可以將客戶端的資料輸入(標準輸入)您的應用程式。事實上,您甚至可以將您最喜歡的 ncurses 程式的輸出傳送到瀏覽器。請參閱上面的截圖影片。
我需要一個用 C 編寫的快速、簡單、無依賴性、無庫、符合 RFC6455 的WebSocket 伺服器,我可以透過簡單地管道輸入和輸出資料來將其用於GoAccess 1.0 版本 — WebSockets 變得容易!
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模式相比,嚴格模式允許您向特定連接的客戶端發送數據/從特定連接的客戶端接收數據,以及追蹤誰打開/關閉了 WebSocket 連線。它還使您能夠在一條訊息中打包和發送任意數量的資料。請參閱此處的特定語言範例。
可以向命令列提供以下選項。
命令列選項 | 描述 |
---|---|
-p --port | 指定要綁定的連接埠。 |
-h --help | 命令列幫助。 |
-V --version | 顯示版本資訊並退出。 |
--access-log=<path/file> | 指定訪問日誌的路徑/檔案。 |
--addr=<addr> | 指定要綁定的位址。 |
--echo-mode | 將伺服器設定為回顯所有收到的訊息。 |
--max-frame-size=<bytes> | Websocket 框架的最大大小。 |
--origin=<origin> | 確保客戶端在握手時發送指定的原始標頭。 |
--pipein=<path/file> | 建立一個從給定路徑/檔案讀取的命名管道 (FIFO)。 |
--pipeout=<path/file> | 建立寫入給定路徑/檔案的命名管道 (FIFO)。 |
--std | 啟用--stdin 和--stdout 。 |
--stdin | 將 stdin 發送到 websocket。 |
--stdout | 將接收到的 websocket 資料傳送到 stdout。 |
--strict | 使用嚴格模式解析訊息。有關更多詳細信息,請參閱手冊頁。 |
--ssl-cert=<cert.crt> | SSL 憑證的路徑。 |
--ssl-key=<priv.key> | SSL 私鑰的路徑。 |
--unix-socket=<addr> | 指定將伺服器綁定到的 UNIX 網域套接字位址。 |
epoll
和kqueue
麻省理工學院許可
歡迎任何有關 gwsocket 的協助。最有幫助的方法是嘗試並提供回饋。請隨意使用 Github 問題追蹤器和拉取請求來討論和提交程式碼變更。
享受!