blazeds 服务器端不知道客户端已断开连接。但它似乎知道客户端的网络已关闭。
在我的例子中,我使用轮询通道,我下载了 blazeds 的源代码,并在FlexClientOutboundQueueProcessor.flush(MessageClient messageClient, List<Message> outboundQueue)
方法中添加了一些日志输出。
然后我看到了,当客户端订阅时,服务器端FlexClientOutboundQueueProcessor.flush
每3秒调用一次该方法,并打印我在flush方法中添加的内容,然后我只关闭客户端的网络,不关闭浏览器(客户端和服务器不同的网络),我发现服务器端不打印任何东西,这意味着服务器端不调用flush方法。
30多分钟后,我恢复了客户端的网络,服务器端继续调用flush方法(客户端的会话没有被破坏,如果我关闭客户端的浏览器,30分钟后服务器端会破坏会话) .
现在,我有两个问题:
服务器端如何知道客户端的网络已关闭?是否有监听器来监控客户端的网络?如果是这样,它在哪里?如果没有,代码如何以及在哪里?
好像服务端会
FlexClientOutboundQueueProcessor.flush
每3秒调用一次方法,这个间隔可以配置吗?以及在哪里启动或停止这个计时任务的代码?