我有一个Netty Server(3.6.2),可以为订阅的客户端生成一些数据和广播。有时某些客户端似乎无法获取数据,因为客户端已损坏或网络资源状况不佳。在这种情况下,服务器填充Channel写入队列并继续生成事件,最终可能导致OutOfMemoryError。
一个解决方案可能是在写入之前检查通道是否是写入()并且不以负面情况写入(无论如何我必须存储此消息或者我将丢失它们)。但是我宁愿断开那些在一段时间内没有刷新写缓冲区的客户端,也不会断开我正在生成广播事件的速度。
我怎么能这样做?如何实现这个写缓冲区不被刷新“超时”?如果isWritable为false,我应该关闭客户端吗?
我真的很感激任何想法。
谢谢。
答案 0 :(得分:0)
是的,如果Channel.isWritable()返回false,你可以关闭连接。