问题标签 [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.
java - Netty,使用 IllegalReferenceCountgException refCnt 读取消息结果:0
我是 netty 的新手,我尝试从服务器(非 netty)接收字节响应。但是,我相信我误解了引用计数。在阅读回复时,我遇到了IllegalReferenceCountException: refCnt:0
我所做的并不那么复杂。我设置了客户端,然后我发送了一条消息,我正在等待回复。
我的 ResponseHandler 看起来像这样:
在读取channelRead
异常中的响应时发生。为什么会发生。有人可以向我解释吗?
netty - 确定客户端与 netty 服务器协商的 TLS 版本
我正在使用网络服务器。我不想为客户强制执行特定的 TLS 版本,但我确实想知道为与服务器的每个传入连接协商哪个 TLS 版本。
我找不到任何方法来确定从 ssl 握手完成事件或从处理程序中提取它的任何其他方法。
是否有可能获得这些信息?
我不明白它是如何得到的
- https://netty.io/4.0/api/io/netty/handler/ssl/SslHandshakeCompletionEvent.html
- https://netty.io/4.0/api/io/netty/handler/ssl/SslHandler.html
谢谢!
编辑我戳了一下,发现“sslHandler.engine().getSession().getProtocol()”但仍然需要测试,看看它是否有效。
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 中。
我错过了什么?
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 类...是否有最新的示例说明如何执行此操作?
netty - 使用 SniHandler 确定客户端与 Netty 服务器协商的 TLS 版本
我目前正在使用 SniHandler 处理 Netty 服务器。我想在会话中记录协商的 TLS 版本,但在 SniHandler 或 SniHandler.SslContext 中找不到此信息。
我试图从 SniHandler 访问 SslHandler,但我没有弄清楚 SniHandler 是如何启动的,如下所示:
我不知道我是否走在正确的轨道上。希望有人能给我一些关于检索 TLS 版本表单会话的建议。
谢谢
我很抱歉问了一个应该在一个月前解决的类似问题。 确定客户端与 netty 服务器协商的 TLS 版本
另外,这是我想知道的一个次要问题。我试图从另一个处理程序中的 ctx 获取上述 sniHandler ,代码如下。
它似乎向我返回了一个空值,有谁知道我错过了什么?
谢谢,谢谢
testing - 在 Netty 服务器中添加延迟
将延迟添加到 Netty 服务器以进行测试的最佳方法是什么?如果在 writeAndFlush() 之前添加了一个简单的 Thread.sleep(n),则在执行 writeAndFlush() 之前,处理程序不会空闲来处理下一个请求,这对于在负载测试中模拟随机请求以获得潜伏。Thread.sleep(n) 现在发生的情况是,在前一个请求从 writeAndFlush() 返回 ChannelFuture 之前,channelRead() 不会收到以下请求。有什么建议么?
java - 在 Netty 4 中从 ByteBuf 构造 HTTP 块
我有一个带有扩展 ReplayingDecoder 的 HTTP 消息解码器的 Netty 3 代码库,我需要迁移分析消息块的代码,这意味着我需要获取这些块。
根据我收集到的信息,我需要改用 HttpChunkedInput,但创建一个非常困难。
ByteBuf 似乎没有办法直接转储流。我是否缺少更好的 Util 类 API?我确实发现有一个新的EmbeddedChannel类,它可以像这里一样简单地 readInbound() ,但我不确定我是否应该为此更改类型或将裸 Channel 转换为 EmbeddedChannel 以摆脱问题。
netty - 在单个端口上接受 http 和 https 协议,在 Netty 服务器上支持 SNI
据我所知, OptionalSslHandler 是为在同一个端口上处理两种协议而构建的,而 SniHandler 是为 SNI 处理而设计的。
两个处理程序似乎都处理了所有复杂的握手和协商步骤,然后在管道中注入一个 sslHandler。
我知道这可能不是一个好主意,但我想知道是否可以在 Netty 4 中的 OptionalSslHandler 之后添加一个 SniHandler ?像“OptionalSniHandler”...?
也许我可以通过覆盖 OptionalSslHandler 来添加 SniHandler 而不是 SslHandler 来实现它?
谢谢!!!
参考资料: netty 服务器如何通过单个端口同时支持 Http 和 Https 协议? 使用 SniHandler 确定客户端与 Netty 服务器协商的 TLS 版本
multithreading - 关闭 Netty 通道时出现死锁
我正在开发一个使用 Netty 发送/接收 RTP 流量的应用程序。在负载测试期间,我们注意到我们的单个工作线程在尝试等待 Netty 关闭通道时遇到了死锁。
语境:
- 所有 RTP 端点之间有一个共享
NioEventLoopGroup
(=> UDP 套接字) - 当仍有流量接收时,通道可能会关闭
- 通道的关闭肯定发生在来自专用工作线程的 Netty 线程之外
- Netty 版本是 4.1.65
引导代码:
关机代码:
卡住的工作线程的线程转储(NettyDatagramSocket:107
指向channel.close()
方法):
NIO EventLoopGroup线程有8个,都是[alive, runnable]
- 一些当前正在处理接收到的数据包
- 他们似乎都没有处理通道关闭
- 一些显示以下线程堆栈:
这看起来像是我的应用程序中的错误还是我可以假设这是 Netty 中的错误?还有什么其他相关的,我可能错过了吗?
netty - 找不到 io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider
我正在使用 Vertx 进行编码,当我在笔记本电脑(MacO)下运行 Junit 测试时,所有单元测试都失败了,事实上,当这些单元测试在 Linux 下成功运行时。
这是我的 Java 11 版本:
我也在使用 gradle 7.2
当我运行 ./gradlew clean build 时,执行单元测试,然后我看到以下错误。似乎vertx调用了netty,然后netty库得到了抱怨MacOS的错误。
顺便说一句,这是我们的 Vertx 版本
有什么想法吗?如何解决?