【问题标题】:blazeds how to understand if the session is timed out揭示了如何理解会话是否超时
【发布时间】:2011-07-25 11:46:58
【问题描述】:

您好,我的目标是捕捉会话何时失效,并向 FlexClient 订阅的所有目的地发送消息,表明客户端 id .... 已断开连接。

我实现了一个服务,它监听 sessionCretaed、sessionDestroyed、clientCreated、clientDestroyed、messageClientCreated、messageClientDestroyed。

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

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

谢谢。

【问题讨论】:

    标签: apache-flex session timeout blazeds


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 首先感谢您的回答。起初,正如您所说,我已经实施了一项服务,但是由于我的目标是向订阅的频道发送消息,因此我需要获取订阅的目的地。但是 blazeds 首先破坏了 messageClients,然后是 FlexClients,最后破坏了 session。所以当我尝试在 sessionDestroyed 中获取 FlexClient 或 messageClients 时,我什么也没得到。现在我正在捕获 messageClientDestroyed 事件以发送消息,但它不仅在会话销毁时调用,它还在客户端添加子主题时调用,所以我需要获取会话是否要销毁或添加了 stopic。
    • 这很奇怪,传递给 sessionDestoryed 的 FlexSession 对象应该给正在离开的客户端。如果您可以访问 MessageService 实例,则可以调用 pushMessageToClients() .... livedocs.adobe.com/blazeds/1/javadoc/flex/messaging/services/…
    猜你喜欢
    • 2011-09-01
    • 1970-01-01
    • 2011-10-22
    • 2011-03-26
    • 2011-10-22
    • 2018-01-24
    • 1970-01-01
    • 2012-03-27
    • 2011-09-04
    相关资源
    最近更新 更多