Apache flex blazeds如何理解会话是否超时

Apache flex blazeds如何理解会话是否超时,apache-flex,session,timeout,blazeds,Apache Flex,Session,Timeout,Blazeds,嗨,我的目标是捕获会话何时无效,并将消息发送到FlexClient订阅的所有目标,即客户端具有id。。。。已断开连接 我实现了一个服务,它侦听sessioncreated、sessionDestroyed、clientCreated、clientdestromed、messageClientCreated、messageclientdestromed 问题是,我想捕获messageClientDestroyed并向该目标发送一条用户已断开连接的消息。但blazeds在您添加子主题时会销毁mess

嗨,我的目标是捕获会话何时无效,并将消息发送到FlexClient订阅的所有目标,即客户端具有id。。。。已断开连接

我实现了一个服务,它侦听sessioncreated、sessionDestroyed、clientCreated、clientdestromed、messageClientCreated、messageclientdestromed

问题是,我想捕获messageClientDestroyed并向该目标发送一条用户已断开连接的消息。但blazeds在您添加子主题时会销毁messageClient。因此,如何理解如果会话无效且所有messageClient都被销毁,或者用户只是进入另一个位置并向其子主题添加子主题消费者

我也欢迎其他解决方案来实现这一机制。当用户因会话超时而断开连接或关闭网站浏览器时,我想捕捉它并向订阅的目的地发送消息


谢谢。

我不是这方面的大师,但我相信您必须在d/c后调整到Flex会话生命周期事件FlexSessionListener

如果您的客户机离开是因为他们想离开,那么在flex端,您可以调用ChanelSet上的disconnectAll(),以便Blaze DS将显式清理资源

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


这两个选项应触发FlexSessionListner.sessionDestroyed()。此方法的参数是一个FlexSession对象,您可以在其中推断您需要什么。

我不是此主题的专家,但我相信您必须在d/c之后调整到FlexSession生命周期事件FlexSessionListener

如果您的客户机离开是因为他们想离开,那么在flex端,您可以调用ChanelSet上的disconnectAll(),以便Blaze DS将显式清理资源

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


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

首先感谢您的回答。起初,我已经实现了一项服务,正如您所说,但由于我的目标是向订阅的频道发送消息,因此我需要获得订阅的目的地。但是blazeds首先销毁MessageClient,然后是FlexClient,最后销毁会话。因此,当我尝试在sessionDestroyed中获取FlexClient或MessageClient时,我什么也没有得到。现在我捕获messageClientDestroyed事件来发送消息,但它不仅在会话被破坏时被调用,在客户端添加子主题时也被调用,因此我需要知道会话是否将被破坏或添加了stopic。这非常奇怪,传递到SessionDestroyed的FlexSession对象应该给正在离开的客户端。如果可以访问MessageService实例,则可以调用pushMessageToClient()。。。。首先谢谢你的回答。起初,我已经实现了一项服务,正如您所说,但由于我的目标是向订阅的频道发送消息,因此我需要获得订阅的目的地。但是blazeds首先销毁MessageClient,然后是FlexClient,最后销毁会话。因此,当我尝试在sessionDestroyed中获取FlexClient或MessageClient时,我什么也没有得到。现在我捕获messageClientDestroyed事件来发送消息,但它不仅在会话被破坏时被调用,在客户端添加子主题时也被调用,因此我需要知道会话是否将被破坏或添加了stopic。这非常奇怪,传递到SessionDestroyed的FlexSession对象应该给正在离开的客户端。如果可以访问MessageService实例,则可以调用pushMessageToClient()。。。。