功能isActive()

时间:2018-06-01 12:33:58

标签: java netty

我有两个应用程序,它们在网络中与Netty在java中进行通信。

在我的服务器应用程序中,我会定期检查连接是否已在运行,即netty频道是否仍然准备就绪:

public void run() {
    LOGGER.trace("controller.run");

    this.alive = true;

    while (this.alive) {
        // Is the channel down ?
        if (isConnected()) {
            sdvAndSleep();
        } else {
            stop();
        }
    }
}

在函数sdvAndSleep()中,我发送了一个heartbreat,我睡了一觉(1秒)。在函数stop()中,我启动一个警报,然后设置alive = false。

在函数isConnected中,我检查netty:

public boolean isConnected() {
    return this.connexion != null && this.connexion.hasChannel() && this.connexion.getChannel().isActive();
}

当我的应用程序运行时,我有时会发出警报,因为“this.connexion.getChannel()。isActive()”部分返回false。但实际上,我的连接已经在运行(我在日志中看到了消息),因此连接并不是非常接近。

我的问题是:如何使用netty中的函数isActive()?为什么它返回false而连接工作?

0 个答案:

没有答案