nginx-websocket-moduleNginx WebSocket 模塊
Nginx 的 WebSocket 模塊。
如何運行?
Nginx 使用多進(jìn)程模型。工作中的進(jìn)程不知道其他的進(jìn)程。當(dāng)有 http 請求時,請求會被一個運行中的進(jìn)程處理。這種模式簡單而有效率。它適用于 Nginx 作為代理服務(wù)器的情況。
然而,如果你希望將 Nginx 作為一個 WebSocket 服務(wù)器,我們將面臨一個棘手的問題。假設(shè)有兩個運行中的進(jìn)程 A 和 B。當(dāng)一個 WebSocket 客戶端到來時,它將被 A 或 B 處理。假設(shè)它被 A 處理。然后 Nginx 會發(fā)送一些 id 信息到客戶端。如果想要發(fā)送東西給客戶端,我們也需要一個請求。然而,我們的推送請求可能由另一個進(jìn)程 B 處理,進(jìn)程 B 不知道客戶端,所以失敗了。
為了解決這個問題,我們讓每個進(jìn)程在開始運行之前偵聽一個唯一的端口。然而,在最新的 nginx 代碼庫中,很難添加偵聽端口。所以我們使一些 nginx 內(nèi)部 api 公開來簡化這個過程。我們將嘗試將此補(bǔ)丁合并到 nginx 代碼庫中。
todo
-
ipv6
-
more debug log
-
push binary data
-
process upstream message
評論
圖片
表情
