嗨,我的目标是捕捉会话无效的时候,并向所有目的地发送消息,FlexClient订阅了id为....的客户端已断开连接。
我实现了一个监听sessioncreated,sessionDestroyed,clientCreated,clientDestroyed,messageClientCreated,messageClientDestroyed的服务。
问题是我想要捕获messageClientDestroyed并向该目的地发送用户已断开连接的消息。但是blazeds会在添加子主题时破坏messageClient。那么如何理解,如果会话无效,所有的messageClient都被销毁,或者用户只是进入另一个地方,并添加一个子主题到他的消费者。
我也对实现该机制的其他解决方案持开放态度。当用户因会话超时或关闭站点浏览器等而断开连接时,我想捕获它并向订阅的目的地发送消息。
谢谢。
我不是这个主题的大师,但我相信你必须调到Flex会话生命周期事件,FlexSessionListener在d/c之后。
如果你的客户端离开是因为他们想要离开,在flex端你调用disconnectAll()在channelset上,这样Blaze DS将显式清理资源。
如果您的客户端因为超时而离开,您可以配置通道定义使用invalidate-session-on-disconnect = true
这两个应该触发flexsessionlistener . sessiondestroyed()。这个方法的参数是一个FlexSession对象,你可以推断你需要什么。