WebSocketd

WebSocketd是WebSocket的守護進程,負責處理WebSocket連接,并啟動服務器應用程序來處理WebSockets,在應用程序和Web瀏覽器之間傳遞消息。

WebSocketd是一款非常特別的WebSocket服務器,它的最大特點是后臺腳本不限語言,其標準輸入stdin就是WebSocket的輸入,標準輸出stdout就是WebSocket的輸出。

WebSocketd本質(zhì)上是命令行的WebSocket代理,只要在命令行可以執(zhí)行的程序,都可以通過它與瀏覽器進行WebSocket通信。

WebSocketd可作為后臺服務運行,幫助處理WebSocket連接,加載應用程序處理WebSocket,在程序和瀏覽器之間傳遞消息,無需任意依賴包且進程獨立。

使用案例

使用Bash編寫服務器腳本并與瀏覽器WebSocket交互

  1. 創(chuàng)建腳本

使用Bash編寫腳本

$ vim test.sh
#!/bin/bash
echo 1
sleep 1
echo 2
sleep 1
echo 3
  1. 啟動服務

啟動WebSocketd指定腳本作為服務,websocketd命令會啟動一個WebSocket服務器并指定端口。每當客戶端連接到服務器,就會執(zhí)行對應的腳本,并將腳本的輸出推送給客戶端。

$ websocketd --port=8080 bash ./test.sh

客戶端JavaScript接口中可通過onmessage方法獲取服務器推送過來的數(shù)據(jù)。

$ vim test.js
var ws = new WebSocket("ws://localhost:8080");
ws.onmessage = function(event){
  console.log(event.data);
};

可將命令行輸出發(fā)送給瀏覽器,比如執(zhí)行ls命令將當前目錄內(nèi)容發(fā)送給瀏覽器,以實時監(jiān)控服務器。

$ websocketd --port=8080 ls

使用案例

使用Python編寫服務器腳本與瀏覽器WebSocket進行交互

$ mkdir websocket && cd websocket
  1. 使用Python編寫服務器腳本
$ vim test.py
import time
print(1)
time.sleep(1)
print(2)
time.sleep(1)
print(3)
time.sleep(1)
  1. 開啟WebSocket守護進程并執(zhí)行Python腳本
$ websocketd --port=9000 python ./test.py
  1. 瀏覽器控制臺查看打印信息
$ vim test.html
<script>
const url = "";
let ws = new WebSocket("ws://localhost:9000");
ws.onmessage = (event)=>console.log(event.data);
</script>

使用Node.js的HTTP-Server開啟HTTP服務器

$ http-server -p 8000 ./

使用瀏覽器訪問 http://127.0.0.1:8000/test.html

命令參數(shù)

$ websocketd --staticdir=.

staticdir表示允許WebSocketd作為靜態(tài)文件提供,也就是說在當前項目指定通知執(zhí)行的語言腳本同名的Web頁面作為靜態(tài)文件。

$ websocketd --devconsole

devconsole標志會使內(nèi)置的控制臺WebSocketd與WebSocket端點進行手工交互。

devconsolestaticdir不能不同使用,內(nèi)置開發(fā)控制臺旨在提供臨時用戶界面,用于構建真實的用戶界面。

配置代理

為WebSocket配置Nginx代理服務器

$ vim test.conf
server {
    listen 443 ssl http2;
    server_name www.test.com;
 
    ssl_certificate /etc/test/full_chain.pem;
    ssl_certificate_key /etc/test/private.key;
 
    location /wssd
    {
        proxy_pass http://lnmp-php:8888;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_read_timeout 600;

    }
}
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,356評論 0 10
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,737評論 0 5
  • 第 2 章 SHELL 基礎知識2.1 shell腳本我們在上面簡單介紹了一下什么是shell腳本,現(xiàn)在我們來進一...
    LiWei_9e4b閱讀 1,652評論 0 0
  • 驚聞小戴辭職 從此不在雨林 難忘相聚歲月 難舍美麗園園 相擁情意綿綿 依依惜別情深 難舍難分daisy 勿忘平凡阿姨
    釋然花雨閱讀 128評論 1 2
  • 風綿綿,雨瀟瀟,雨天心情總是濕。雨是雨,你是你,雨天一念你,情絲如雨絲,絲絲總相連??粗辏胫?,雨里正...
    冰夫閱讀 572評論 0 0

友情鏈接更多精彩內(nèi)容