问题标签 [reactor-netty]
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 - 关闭 Reactor 3.0.4 中的 netty TcpClient 通道
我刚刚将 projectreactor.io 从 reactor OLD升级:[core: 3.0.1 .RELEASE, netty: 0.5.2 .RELEASE] 到 reactor NEW [core: 3.0.4 .RELEASE, netty: 0.6.0 .RELEASE]。
我打开一个 TcpClient 连接并想稍后关闭它。
在我使用的旧版本中
断开我的客户端与服务器的连接。
新版本中是否有等效调用?我找不到一个!
我在创建我的 TcpClient 时得到的NettyInbound
和NettyOutbound
tcpClient.newHandler(...)
.context().dispose()
.context().channel().disconnect()
.context().channel().close()
TcpResources.reset()
他们似乎都没有正确地完成这项工作。
我注意到.context().onClose(...)
正在调用相应的 -callback 。但是经过一些额外的等待,服务器端会检查连接。服务器端是普通的 NIO2 而不是 reactor/netty,当客户端升级时,服务器端保持不变。
使用OLD客户端,我.isOpen() == false
为服务器端的每个频道提供服务。
使用新客户端,我可以获得.isOpen() == true
服务器端的每个频道。大多数时候我什至可以写信给频道。.isOpen() == false
一些通道在写入几个字节后切换到。
spring-webflux - 从 RestController 中的 TCP 服务器获取响应
我的 Spring webflux 控制器需要访问远程 TCP 服务器。如何将来自 TCP 服务器的响应流式传输到客户端?
就像是:
但是使用 TcpClient(不是 WebClient)。
谢谢,
- 缺口
reactor-netty - 带有管道的 Reactor Netty TcpServer
在 reactor netty 之前,我组装一个 Netty Tcp 服务器的方式是创建服务器引导程序并添加我的自定义管道类。使用 Reactor-Netty 有 TcpServer.create(),但似乎我必须创建一个新的功能接口,该接口采用 NettyInbound 和 NettyOutbound 并返回一个 Mono。但是,如果我想添加一个构建管道的 ChannelInitializer,我必须阻止获取 NettyContext。传入的消息由功能接口接收,我可以发送响应,但没有任何东西通过我的管道。
有没有办法让我们使用 Reactor Netty 并让消息通过定制的管道流动?
在建立连接和收到消息时,使用 neverComplete() 返回 Mono.just("Hi") 成功地向客户端发送“Hi”,但我需要将其卸载到管道然后获取结果馈送回到客户端。
java - 如何在没有 SSL 的情况下创建 Reactor Netty HttpClient
我正在创建一个 HttpClient 来将一个简单的字符串发送到我目前正在使用 mockserver-netty 模拟的服务器。
和
其中 getTestRequest() 返回我为测试构建的字符串。
但是,似乎我必须设置一个带有错误的整个 SSL 环境:
无法加载库“netty-tcnative”,尝试下一个名称等
ReactiveException:javax.net.ssl.SSLException:握手超时
有没有一种方法可以在不设置 SSL 的情况下使用 reactor netty 的 HttpClient?
谢谢
netty - 使用 Reactor Netty HttpClient 发送 DefaultFullHttpRequest
我正在尝试向 Reactor-Netty HttpServer 发送一条大消息。该消息为 1511 字节,根据 HttpClient 日志记录已成功写入,但在服务器端仅读取了 1024 字节。这是因为标头中没有 Content-Length。
Reactor-Netty 有一些发送选项,适用于我的帖子的选项是 send 或 sendObject。send 方法仅提供发送 ByteBuf 的选项,并且 DefaultFullHttpRequest 不提供转换为 ByteBuf 的方法,因此我无法包含标头。
我看不到在哪里设置内容长度,如果我发送一个对象,我会看到标题写了两次:
当我只发送内容时,我看到了一次
14:39:46.645 [reactor-http-nio-4] 调试 rincChannelOperationsHandler - [id: 0x85f9df60, L:/127.0.0.1:57054 - R:localhost/127.0.0.1:8092] 写入对象 DefaultHttpRequest(解码结果:成功,版本: HTTP/1.1) POST /xmlvend HTTP/1.1 用户代理: ReactorNetty/0.6.3.RELEASE 传输编码: 分块主机: localhost:8092 接受: /
然后再次使用内容长度
14:39:46.650 [reactor-http-nio-4] 调试 rincChannelOperationsHandler - [id: 0x85f9df60, L:/127.0.0.1:57054 - R:localhost/127.0.0.1:8092] 写入对象 DefaultFullHttpRequest(decodeResult: 成功,版本: HTTP/1.1, 内容: UnpooledHeapByteBuf(ridx: 0, widx: 1511, cap: 1511/1511)) POST /xmlvend HTTP/1.1 Content-Length: 1511
有没有办法使用reactor-netty发送FullHttpRequest,当然我不必采用正常的netty方式来创建套接字等。
谢谢
project-reactor - Reactor-Netty:意外消息类型:PooledUnsafeDirectByteBuf
我有一个 HttpServer 和一个 HttpClient。如果我在任一侧使用 Netty 的 HttpServerCodec 和 HttpObjectAggregator,我都会收到错误消息。
服务器代码
客户
serverEndPoint 还包含 HttpServerCodec 和 ObjectAggregator。我尝试使用 HttpClientCodec,在管道中不使用任何内容尝试发送 DefaultFullHttpRequest。要么我得到了异常,要么在客户端只读取了 1024 个字节。我需要发送一个超过 1024 字节的分块请求。
谢谢
netty - 读取具有 PooledUnsafeDirectByteBuf 的 HttpContent
我有一个 Reactor-Netty HttpServer,我从 HttpClient 向其发送超过 1024 个字节的数据。
在客户端中,我在 Flux 中获取请求的不同部分,其想法是将数据连接成一个我最终可以解析的字符串。我认为这可以由 HttpObjectAggregator 完成,但可惜不是。
当客户端收到内容时,它以
DefaultHttpContent(数据: PooledSlicedByteBuf(ridx: 1024, widx: 1024, cap: 1024/1024, unwrapped: PooledUnsafeDirectByteBuf(ridx: 1024, widx: 1024, cap: 1024)), decoderResult: 成功)
和
DefaultLastHttpContent(数据: PooledSlicedByteBuf(ridx: 98, widx: 98, cap: 98/98, unwrapped: PooledUnsafeDirectByteBuf(ridx: 98, widx: 98, cap: 1024)), decoderResult: 成功)
如果我尝试“提取”字节,我发现它们不可用。
服务器
客户
知道如何获取数据吗?
数据记录到控制台,例如:
98B +------------------------------------------------ -+ | 0 1 2 3 4 5 6 7 8 9 abcdef | +--------+---------------------------------------- ---------+----------------+ |00000000| 54 68 61 6e 31 30 32 34 62 79 74 65 73 6d 6f 72 |Than1024bytesmor| |00000010| 65 54 68 61 6e 31 30 32 34 62 79 74 65 73 6d 6f |eThan1024bytesmo| |00000020| 72 65 54 68 61 6e 31 30 32 34 62 79 74 65 73 6d |reThan1024bytesm| |00000030| 6f 72 65 54 68 61 6e 31 30 32 34 62 79 74 65 73 |oreThan1024bytes| |00000040| 6d 6f 72 65 54 68 61 6e 31 30 32 34 62 79 74 65 |超过1024字节| |00000050| 73 6d 6f 72 65 54 68 61 6e 31 30 32 34 62 79 74 |超过1024字节| |00000060| 65 73 |es | +--------+---------------------------------------- ---------+----------------+ | +--------+---------------------------------------- ---------+----------------+ | +--------+---------------------------------------- ---------+----------------+
谢谢
spring - 如何在 Spring Boot 应用程序中为 Netty 配置 TLS?
我的微服务正在使用最新版本的 Spring Boot、Spring WebFlux (Undertow)、Spring Data MongoDB、Spring Cloud Netflix 和 Kotlin...
现在我已经设置了一个演示项目来使用新的功能接口而不是 Spring WebFlux 中的注释。使用带有 HTTP 的 Netty 可以正常工作。但是,我找不到任何有关如何使用 TLS 配置 Netty 的信息。HTTPS。任何提示表示赞赏!
spring - 如何在 Spring 5 WebFlux WebClient 中设置超时
我正在尝试在我的 WebClient 上设置超时,这是当前代码:
我需要添加超时和池策略,我在想这样的事情:
但我不知道如何在我的网络客户端中设置 httpClient
spring-boot - 如何在spring boot 2中配置netty
默认情况下,spring web Flux 使用 netty,它是单线程事件循环。如何配置 Spring Boot 以便为每个核心创建一个线程。
谢谢,
洛克什