【问题标题】:Is there a one to one mapping in channelOpen and channelClosed upstream events in Netty 3?Netty 3 中的 channelOpen 和 channelClosed 上游事件中是否存在一对一的映射?
【发布时间】:2020-04-10 11:10:50
【问题描述】:

根据文档https://netty.io/3.6/api/org/jboss/netty/channel/ChannelEvent.html,有 2 个上游事件会改变 OPEN 通道的状态:

channelOpen(状态 = OPEN,值 = true)

channelClosed(状态 = OPEN,值 = false)

还有一个下游事件:

关闭(状态=打开,值=假)

但是,我找不到有关上游 channelOpen 和 channelClosed 事件之间是否存在保证的一对一关系的任何文档。 IE。是否保证如果 channelOpen 事件被触发,那么 channelClosed 事件也将被触发一次,无论哪一方(客户端或服务器)以及如何(优雅地或不优雅地)关闭套接字?

我想要实现的是一种机制来限制我的应用程序中开放通道的数量。为了实现这一点,我打算在每个通道管道中添加一个 SimpleChannelHandler 的共享实例,并在以下位置增加/减少计数器:

channelClosed 和 channelOpen 方法:

https://netty.io/3.6/api/org/jboss/netty/channel/SimpleChannelHandler.html#channelOpen(org.jboss.netty.channel.ChannelHandlerContext,%20org.jboss.netty.channel.ChannelStateEvent) https://netty.io/3.6/api/org/jboss/netty/channel/SimpleChannelHandler.html#channelClosed(org.jboss.netty.channel.ChannelHandlerContext,%20org.jboss.netty.channel.ChannelStateEvent)

实现这种机制是正确的方法吗?或者可能存在未生成上游 channelClosed 事件而还应检查下游事件的情况?

谢谢!

【问题讨论】:

    标签: java netty channel


    【解决方案1】:

    netty 3.x 的第一个版本是永远的生命终结,所以你应该升级到 4.1.x。也就是说,是的,一旦您收到open,您还将收到close

    【讨论】:

      猜你喜欢
      • 2018-10-16
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2012-11-12
      相关资源
      最近更新 更多