0

blazeds 服务器端不知道客户端已断开连接。但它似乎知道客户端的网络已关闭。

在我的例子中,我使用轮询通道,我下载了 blazeds 的源代码,并在FlexClientOutboundQueueProcessor.flush(MessageClient messageClient, List<Message> outboundQueue)方法中添加了一些日志输出。

然后我看到了,当客户端订阅时,服务器端FlexClientOutboundQueueProcessor.flush每3秒调用一次该方法,并打印我在flush方法中添加的内容,然后我只关闭客户端的网络,不关闭浏览器(客户端和服务器不同的网络),我发现服务器端不打印任何东西,这意味着服务器端不调用flush方法。

30多分钟后,我恢复了客户端的网络,服务器端继续调用flush方法(客户端的会话没有被破坏,如果我关闭客户端的浏览器,30分钟后服务器端会破坏会话) .

现在,我有两个问题:

  1. 服务器端如何知道客户端的网络已关闭?是否有监听器来监控客户端的网络?如果是这样,它在哪里?如果没有,代码如何以及在哪里?

  2. 好像服务端会FlexClientOutboundQueueProcessor.flush每3秒调用一次方法,这个间隔可以配置吗?以及在哪里启动或停止这个计时任务的代码?

4

1 回答 1

0

这里回答您的第一个问题:Detecting (on the server side) when a Flex client disconnects from BlazeDS destination

关于配置。您可以在 services-config.xml 中进行配置。

示例 BlazeDS 应用程序

使用基于 servlet 的端点配置通道

于 2012-09-21T11:03:19.130 回答