问题标签 [netty4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
47 浏览

java - Netty,使用 IllegalReferenceCountgException refCnt 读取消息结果:0

我是 netty 的新手,我尝试从服务器(非 netty)接收字节响应。但是,我相信我误解了引用计数。在阅读回复时,我遇到了IllegalReferenceCountException: refCnt:0

我所做的并不那么复杂。我设置了客户端,然后我发送了一条消息,我正在等待回复。

我的 ResponseHandler 看起来像这样:

在读取channelRead异常中的响应时发生。为什么会发生。有人可以向我解释吗?

0 投票
1 回答
47 浏览

netty - 确定客户端与 netty 服务器协商的 TLS 版本

我正在使用网络服务器。我不想为客户强制执行特定的 TLS 版本,但我确实想知道为与服务器的每个传入连接协商哪个 TLS 版本。

我找不到任何方法来确定从 ssl 握手完成事件或从处理程序中提取它的任何其他方法。

是否有可能获得这些信息?

我不明白它是如何得到的

谢谢!

编辑我戳了一下,发现“sslHandler.engine().getSession().getProtocol()”但仍然需要测试,看看它是否有效。

0 投票
1 回答
42 浏览

https - 尝试在骆驼 2.x 中使用 netty4-http 作为 https 安全客户端

在我的蓝图 xml 中,我设置了...

并希望使用此 .to 行连接到 https 服务器。

但在蓝图中,我得到一个红色的 x,在“mvn clean install”下面的解释中也是如此......

检查骆驼 netty4-http 文档https://camel.apache.org/components/2.x/netty4-http-component.html我在选项 sslContextParameters 和查询参数下看到我看到 SSL 和 sslContextParameters。骆驼 netty4-http 中没有提到“;” 在 URI 中。

我错过了什么?

0 投票
2 回答
110 浏览

http - Netty 多个协议在同一个端口上?

我需要实现一个 HTTP 服务器,其中某个 URI 允许升级到 WebSocket 连接。标准的 WebSocket 处理程序类是这样的:

https://netty.io/4.0/xref/io/netty/handler/codec/http/websocketx/WebSocketServerProtocolHandler.html

JavaDoc 提到该类仅用于支持 WebSockets,如果还想在同一个套接字上支持 HTTP 请求,则应参考以下示例:

https://netty.io/4.0/xref/io/netty/example/http/websocketx/server/WebSocketServer.html

但是,上面的示例实际上使用了 WebSocketServerProtocolHandler 类...是否有最新的示例说明如何执行此操作?

0 投票
1 回答
37 浏览

netty - 使用 SniHandler 确定客户端与 Netty 服务器协商的 TLS 版本

我目前正在使用 SniHandler 处理 Netty 服务器。我想在会话中记录协商的 TLS 版本,但在 SniHandler 或 SniHandler.SslContext 中找不到此信息。

我试图从 SniHandler 访问 SslHandler,但我没有弄清楚 SniHandler 是如何启动的,如下所示:

我不知道我是否走在正确的轨道上。希望有人能给我一些关于检索 TLS 版本表单会话的建议。

谢谢

我很抱歉问了一个应该在一个月前解决的类似问题。 确定客户端与 netty 服务器协商的 TLS 版本

另外,这是我想知道的一个次要问题。我试图从另一个处理程序中的 ctx 获取上述 sniHandler ,代码如下。

它似乎向我返回了一个空值,有谁知道我错过了什么?

谢谢,谢谢

0 投票
0 回答
42 浏览

testing - 在 Netty 服务器中添加延迟

将延迟添加到 Netty 服务器以进行测试的最佳方法是什么?如果在 writeAndFlush() 之前添加了一个简单的 Thread.sleep(n),则在执行 writeAndFlush() 之前,处理程序不会空闲来处理下一个请求,这对于在负载测试中模拟随机请求以获得潜伏。Thread.sleep(n) 现在发生的情况是,在前一个请求从 writeAndFlush() 返回 ChannelFuture 之前,channelRead() 不会收到以下请求。有什么建议么?

0 投票
1 回答
38 浏览

java - 在 Netty 4 中从 ByteBuf 构造 HTTP 块

我有一个带有扩展 ReplayingDecoder 的 HTTP 消息解码器的 Netty 3 代码库,我需要迁移分析消息块的代码,这意味着我需要获取这些块。

根据我收集到的信息,我需要改用 HttpChunkedInput,但创建一个非常困难。

ByteBuf 似乎没有办法直接转储流。我是否缺少更好的 Util 类 API?我确实发现有一个新的EmbeddedChannel类,它可以像这里一样简单地 readInbound() ,但我不确定我是否应该为此更改类型或将裸 Channel 转换为 EmbeddedChannel 以摆脱问题。

0 投票
0 回答
40 浏览

netty - 在单个端口上接受 http 和 https 协议,在 Netty 服务器上支持 SNI

据我所知, OptionalSslHandler 是为在同一个端口上处理两种协议而构建的,而 SniHandler 是为 SNI 处理而设计的。

两个处理程序似乎都处理了所有复杂的握手和协商步骤,然后在管道中注入一个 sslHandler。

我知道这可能不是一个好主意,但我想知道是否可以在 Netty 4 中的 OptionalSslHandler 之后添加一个 SniHandler ?像“OptionalSniHandler”...?

也许我可以通过覆盖 OptionalSslHandler 来添加 SniHandler 而不是 SslHandler 来实现它?

谢谢!!!

参考资料: netty 服务器如何通过单个端口同时支持 Http 和 Https 协议? 使用 SniHandler 确定客户端与 Netty 服务器协商的 TLS 版本

0 投票
0 回答
93 浏览

multithreading - 关闭 Netty 通道时出现死锁

我正在开发一个使用 Netty 发送/接收 RTP 流量的应用程序。在负载测试期间,我们注意到我们的单个工作线程在尝试等待 Netty 关闭通道时遇到了死锁。

语境:

  • 所有 RTP 端点之间有一个共享NioEventLoopGroup(=> UDP 套接字)
  • 当仍有流量接收时,通道可能会关闭
  • 通道的关闭肯定发生在来自专用工作线程的 Netty 线程之外
  • Netty 版本是 4.1.65

引导代码:

关机代码:

卡住的工作线程的线程转储(NettyDatagramSocket:107指向channel.close()方法):

NIO EventLoopGroup线程有8个,都是[alive, runnable]

  • 一些当前正在处理接收到的数据包
  • 他们似乎都没有处理通道关闭
  • 一些显示以下线程堆栈:

这看起来像是我的应用程序中的错误还是我可以假设这是 Netty 中的错误?还有什么其他相关的,我可能错过了吗?

0 投票
2 回答
1498 浏览

netty - 找不到 io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider

我正在使用 Vertx 进行编码,当我在笔记本电脑(MacO)下运行 Junit 测试时,所有单元测试都失败了,事实上,当这些单元测试在 Linux 下成功运行时。

这是我的 Java 11 版本:

我也在使用 gradle 7.2

当我运行 ./gradlew clean build 时,执行单元测试,然后我看到以下错误。似乎vertx调用了netty,然后netty库得到了抱怨MacOS的错误。

顺便说一句,这是我们的 Vertx 版本

有什么想法吗?如何解决?