http - Netty http 流水线方法验证

标签 http netty http-protocols

我已经实现了一个 channel 处理程序来处理 http pipelining .我的代码在 github: https://github.com/huntc/netty-http-pipelining

我的问题是围绕我所采用的方法以及它在 Netty 架构的上下文中是否合理。

当我的 HttpPipeliningHandler 接收到上游 HttpRequest 时,它会形成一个新的 OrderedUpstreamMessageEvent 类型的消息事件。此事件也是我的包的一部分,并保留与制定回复消息时所需的请求相关的信息。

当更上游的 channel 处理程序接收到 OrderedUpstreamMessageEvent 时,它通过生成 OrderedDownstreamMessageEvent 来形成回复,例如:

ctx.sendDownstream(new OrderedDownstreamMessageEvent(oue, somemessage));

在哪里

ctx = ChannelHandlerContext instance
oue = OrderedUpstreamMessageEvent instance
somemessage = some message instance to be sent as an http response

您还可以做更多有趣的事情,例如发送分块回复。

这种做法看起来合理吗?它当然有效!在上游处理程序中转换消息事件是否正常/可接受?显然,如果再次转换消息事件,则流水线功能将不起作用。

最佳答案

我快速浏览了一下...一些评论。

1) 您对 PriorityQueue 的访问必须同步,因为下游事件可能会被任何线程触发。

2) nextRequiredSequence 也需要做同样的事情,或者使用 AtomicInteger 应该更好

3) 你想使用 Channel.close()

其他看起来还不错

关于http - Netty http 流水线方法验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15675708/

相关文章:

ssl - 在 gRPC TLS 中禁用证书检查

c# - 在 C# 中通过 tcp 连接发出 post 请求

node.js - 随机名称 HTTP header 开头的四个空格字符

php - 如何在 PHP 中创建 websockets 服务器?

http - 使用 HTTP Kit 进行流式连接/长轮询?

http - 在 HTTP 术语中,哪一个是消息,哪个是实体?

http - Adobe AIR HTTP 连接限制

c - 解析 HTTP header 的子集以识别主机 Web 地址

java - 你能用 Netty 测量 TCP 带宽、延迟和抖动吗?

java - 如何使用netty打开连接,并立即将数据发送到我连接的主机?