当前位置: 首页 > 知识库问答 >
问题:

如何防止服务器端读取超时处理程序在 Netty 中在服务器准备响应时触发?

高修伟
2023-03-14

由于Netty中的服务器端ReadTimeoutHandler不知道为什么客户端没有写入任何数据,所以当服务器仍在准备对接收到的客户端请求的响应时,它可能会抛出ReadTimeoutException(即,在客户端因为仍在等待服务器的回复而没有写入任何内容的时候)。

处理这种情况的最佳做法是什么?我目前正在考虑

  • 在我的处理程序中保留一个标志,告诉服务器在准备响应时忽略读取超时,
  • 在服务器准备响应时从管道中删除ReadTimeoutHandler,然后重新添加
  • 编写我自己的ReadTimeoutHandler版本,可以根据每个通道打开和关闭

在Netty中是否有处理这种情况的建议方法?

共有1个答案

梁兴文
2023-03-14

如果它被触发并且是预期的,我会忽略超时…我之前也做过的另一种方法是动态地从管道中添加和删除处理程序

 类似资料:
  • 有人知道netty服务器处理程序取消从web服务器接收数据的最佳方法吗?我有一个服务器处理程序,它将HttpRequests代理到web服务器。但是,当请求客户端取消请求时,我希望在不关闭服务器处理程序和web服务器之间的连接的情况下停止从web服务器接收服务器通道上的数据。 有谁知道我怎么才能做到这一点。你的答复将不胜感激。 非常感谢。

  • 问题内容: 我经常在Netty工作,但仍然有一个概念在暗示我,在教程等中找不到任何内容。首先,我确实了解Netty是异步的,但是客户端必须有一种方法来调用服务器,并且能够获得处理程序之外的响应。让我解释更多。 我有一个客户,如下图所示。并且请注意,我知道它是自举的,并且在每次调用时都会建立一个新的连接,这是为了使示例更小,更简洁。请忽略这个事实。 客户端.java 现在,我了解了如何获取服务器上的

  • 我有一个Tcp客户端,连接到一个旧的主机(52年),发送和接收来自它的请求和响应。 这是我的客户机的核心连接部分, 我试图用Netty重写下面的文章。通过使用以下教程作为参考。 http://tutorials.jenkov.com/netty/netty-tcp-client.html 我面临的问题是我能够连接到服务器,但不能从中读写。我正在使用一个来执行读写操作。 这是我的脾气暴躁的客户 处理

  • 我有一个在Netty中实现的服务器,它工作得很好,但现在我试图优化一个方面。 传入通道是多路复用的,即每个客户机进程都有许多线程,通过一个连接发送请求并读取响应到服务器。 谢谢, 安迪。

  • 在调用writeAndFlush()之后,我不知道如何从服务器检索响应;我该怎么办? 我也使用Netty 4.0.18.final

  • 我正在用C++开发双向流gRPC。我想在服务器端设置一个超时限制,如果连接超过一个阈值,就关闭连接。 但是我发现的唯一超时机制是在客户端(https://grpc.io/blog/deadlines/#c)。我找不到任何API可以用于ServerContext(https://grpc.github.io/grpc/cpp/classgrpc_1_1_server_context.html)。有人