在用Netty編寫的HTTP反向代理中,如何確定爲單個HTTP請求(標頭+任何主體內容)讀取的字節數或爲單個HTTP響應寫入的字節數? Netty如何開箱即用HTTPRequestDecoder
和HTTPResponseEncoder
(或超類)將此信息提供給其他ChannelHandler
?Netty:單個HTTP請求或響應中的字節數?
我知道很容易在管道的開頭添加一個ChannelHandler
以合計記錄爲通道寫入和讀取的字節,但我不希望這樣 - 我想知道讀取或寫入的字節數每個請求和每個響應。由於Netty開箱即用的HTTP編碼器和解碼器是進行讀寫操作的,所以我希望能夠對某些東西進行子類化並'讀入'讀取/寫入邏輯,以便將每條消息的計數值編碼或解碼。這可能嗎?表示請求/響應大小時直方圖以及支持HTTP擴展訪問日誌格式
這個數據是很重要的:
http://httpd.apache.org/docs/current/mod/mod_log_config.html
從該頁面,記錄單個請求時使用的訪問日誌格式字符串標記/響應對:
%I Bytes received, including request and headers. Cannot be zero. You need to enable mod_logio to use this.
%O Bytes sent, including headers. May be zero in rare cases such as when a request is aborted before a response is sent. You need to enable mod_logio to use this.
%S Bytes transferred (received and sent), including request and headers, cannot be zero. This is the combination of %I and %O. You need to enable mod_logio to use this.
一旦請求被完全讀取或響應完全由Netty的處理程序寫入,我將如何確定需要替代上述形式的計數在輸出字符串中的標記?
你可以計算它們。 Netty提供每次讀取或寫入的讀取或寫入次數。不清楚你在問什麼。 – EJP
@EJP我非常瞭解Netty內部。在使用Netty現有的HTTP編碼器或解碼器時,我問,讀取或寫入的字節數如何提供給我(因爲我沒有編碼Netty的HTTP支持)? –
@EJP你的downvote是不必要的 - 這個問題是可行的,值得回答。在問這個問題之前,我已經做了大量的研究。我會更新它,但要更清楚一點。 –