blazeds如何理解会话是否超时

时间:2011-07-25 11:46:58

标签: flex session timeout blazeds

您好我的目标是在会话失效时捕获并向FlexClient订阅的客户端与ID已断开连接的所有目的地发送消息。

我实现了一个侦听sessionCretaed,sessionDestroyed,clientCreated,clientDestroyed,messageClientCreated,messageClientDestroyed的服务。

问题是我想捕获messageClientDestroyed并向该目的地发送用户已断开连接的消息。但是当你添加一个子主题时,blazeds会破坏messageClient。所以如何理解如果会话失效并且所有的messageClient都被销毁或者用户只需进入另一个地方并为他的消费者添加一个子主题。

我也开放其他解决方案来实现该机制。当用户通过会话超时断开连接或关闭网站浏览器等时,我想抓住它并向订阅目的地发送消息。

谢谢。

1 个答案:

答案 0 :(得分:1)

我不是这个主题的主人,但我相信你必须在d / c之后调整Flex会话生命周期事件,FlexSessionListener。

如果您的客户端因为他们想要离开,则在flex侧调用ChanelSet上的disconnectAll(),以便Blaze DS明确清理资源。

如果您的客户因超时而离开,您可以将通道定义配置为使用invalidate-session-on-disconnect = true

这两个应该触发FlexSessionListner.sessionDestroyed()。此方法的参数是FlexSession对象,您可以在其中推断所需内容。