gpt4 book ai didi

java - Apache Mina 空闲监视器

转载 作者:行者123 更新时间:2023-11-30 06:30:59 25 4
gpt4 key购买 nike

我一直在使用 Apache Mina 开发我的第一个基于 TCP/Socket 的应用程序,它看起来很棒而且很容易做。我只想在这里问一个关于 Mina 的问题。

服务器强加 5 秒的空闲时间将终止套接字连接,因此我们必须发送周期性心跳(回显消息/保持 Activity )以确保连接处于 Activity 状态。某种保活机制。

有一种方法是我们每 5 秒发送一次盲目的回显/心跳消息。我在想,如果我正在发送我的业务消息并且没有进入空闲时间,即 5 秒,应该有智能/智能方式“空闲监视器”,我不应该发出心跳消息。如果整个连接空闲,将发送心跳消息,这样我们就可以节省带宽和快速读写socket。

最佳答案

您可以使用 Keep Alive Filter 来实现它(已经存在于 mina 中)。

或者,您可以通过将客户端的 session 空闲超时设置为比服务器的空闲超时小一点来实现发送回显/心跳的更智能的方式。例如:

服务器端

NioSocketAcceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 5);

对于客户端来说就是

NioSocketConnector.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 3);

现在,如果 3 秒内没有通信,将在客户端触发 sessionIdle(并且不会在服务器端触发,因为超时为 5 秒),您可以发送回显。这将使 session 保持 Activity 状态。只有在 session 空闲时才会发送回显。

注意: 我假设在 session 空闲时, session 正在服务器端关闭。如果是其他方式,您将需要切换 session 空闲超时值(例如,服务器为 3 秒,客户端为 5 秒),然后将从服务器发送回显。

关于java - Apache Mina 空闲监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9997748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com