服务器端的blazeds不知道客户端已断开连接。但它似乎知道客户端的网络已经关闭。
就我而言,我使用轮询频道,我下载了blazeds的源代码,并在FlexClientOutboundQueueProcessor.flush(MessageClient messageClient, List<Message> outboundQueue)
方法中添加了一些日志输出。
然后我看到了这一点,当客户端一个子服务器,服务器端每隔3秒调用FlexClientOutboundQueueProcessor.flush
方法,并打印我在flush方法中添加的内容,然后我只关闭客户端的网络,而不是关闭浏览器(客户端和服务器有差异网络),我发现服务器端没有打印任何东西,这意味着服务器端不会调用flush方法。
超过30分钟后我恢复了客户端的网络,服务器端继续调用flush方法(客户端的会话没有被破坏,如果我关闭客户端的浏览器,30分钟后服务器端会破坏会议)。
现在,我有两个问题:
服务器端如何知道客户端的网络已经崩溃?是否有监听客户网络的监听器?如果是的话,它在哪里?如果不是,代码的方式和位置?
似乎服务器端每隔3秒调用一次FlexClientOutboundQueueProcessor.flush
方法,是否可以配置此间隔?在哪里开始或停止这个计时任务的代码?
答案 0 :(得分:0)
在这里回答您的第一个问题:Detecting (on the server side) when a Flex client disconnects from BlazeDS destination
关于配置。您可以在services-config.xml中进行配置。