簡體   English   中英

Netty:單個HTTP請求或響應中的字節數?

[英]Netty: number of bytes in a single HTTP request or response?

在使用Netty編寫的HTTP反向代理中,如何確定單個HTTP請求(標頭+任何正文內容)或為單個HTTP響應編寫的字節數? Netty的開箱即用HTTPRequestDecoderHTTPResponseEncoder (或超類)如何使這些信息可供其他ChannelHandler

我知道很容易在管道的開頭粘貼一個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只將HttpRequest / HttpResponse / HttpContent的“已解析”表示傳遞給管道中的下一個處理程序。 您需要自己進行數學計算,例如計算標題中的每個字符等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM