通道上的 Netty channel().read() 当前没有任何数据

Netty channel().read() on channel without any data currently present

我试图弄清楚如何在 netty 中实现背压,我发现 autoread=true 并使用显式 ctx.channel().read() 可能有效,但我不确定它是如何工作的并且无法找到更多详情。

具体来说,我想知道如果调用 read() 会发生什么。 netty 是否会尝试从底层通道读取语义(假设是 websocket 连接)?如果没有数据可供读取怎么办?不读取任何数据,读取会成功吗?或者我是否可以保证如果我调用一次读取,它会一直尝试读取直到有一些数据可用?

谢谢

read() 基本上只是告诉 Channel 在有东西准备好时读取下一个数据块,这意味着直接读取或稍后读取。所以是的,你可以保证,如果你调用 read() 它会在某个时候读取。