Netty:单个 HTTP 请求或响应中的字节数?
Netty: number of bytes in a single HTTP request or response?
在用 Netty 编写的 HTTP 反向代理中,如何确定为单个 HTTP 请求(headers + 任何 body 内容)读取或为单个 HTTP 响应写入的字节数?如何让 Netty 的开箱即用 HTTPRequestDecoder
和 HTTPResponseEncoder
(或超类)使这些信息对其他 ChannelHandler
可用?
我知道在管道的开头添加一个 ChannelHandler
来记录为通道写入和读取的总字节数很容易,但我不想那样 - 我想知道数字每个请求和每个响应读取或写入的字节数。由于 Netty 开箱即用的 HTTP 编码器和解码器是进行读取和写入的,我希望我可以将某些东西和 'hook in' 子类化到 read/writing 逻辑以获得每条消息的编码或解码计数.这可能吗?
此数据在表示 request/response 大小直方图以及支持 HTTP 扩展访问日志格式时非常重要:
http://httpd.apache.org/docs/current/mod/mod_log_config.html
从该页面访问记录单个 request/response 对时使用的日志格式字符串标记:
%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 的 "parsed" 表示传递给管道中的下一个处理程序。您需要自己进行数学运算,例如计算 headers 等
中的每个字符
在用 Netty 编写的 HTTP 反向代理中,如何确定为单个 HTTP 请求(headers + 任何 body 内容)读取或为单个 HTTP 响应写入的字节数?如何让 Netty 的开箱即用 HTTPRequestDecoder
和 HTTPResponseEncoder
(或超类)使这些信息对其他 ChannelHandler
可用?
我知道在管道的开头添加一个 ChannelHandler
来记录为通道写入和读取的总字节数很容易,但我不想那样 - 我想知道数字每个请求和每个响应读取或写入的字节数。由于 Netty 开箱即用的 HTTP 编码器和解码器是进行读取和写入的,我希望我可以将某些东西和 'hook in' 子类化到 read/writing 逻辑以获得每条消息的编码或解码计数.这可能吗?
此数据在表示 request/response 大小直方图以及支持 HTTP 扩展访问日志格式时非常重要:
http://httpd.apache.org/docs/current/mod/mod_log_config.html
从该页面访问记录单个 request/response 对时使用的日志格式字符串标记:
%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 的 "parsed" 表示传递给管道中的下一个处理程序。您需要自己进行数学运算,例如计算 headers 等
中的每个字符