氛围 - 在AtmosphereResource上存储属性

时间:2013-12-27 16:35:25

标签: java websocket atmosphere

我需要针对挂起的请求存储一些服务器端值,我不确定应该怎么做。当挂起的连接不再在客户端上运行时,我希望清除属性。我希望AtmosphereResource拥有setAttribute(name,value)getAttribute(name)方法,但它们不存在。我想到了三种可能的方法:

  1. 使用AtmosphereResource.getRequest().setAttribute(name,value)
  2. 提供我自己的AtmosphereResource实现并在那里添加方法(由并发映射支持)。
  3. 使用某种形式的侦听器/拦截器侦听AtmosphereResource的创建/销毁并使用AtmosphereResource.uuid()维护我自己的服务器端状态。
  4. 问题:

    1. 使用已暂停请求的请求属性是否有任何问题?这适用于所有运输方式吗?
    2. 是否有提供自定义AtmosphereResource实施的示例?
    3. 如果我提供自己的AtmosphereResource实施,它是否会在暂停请求的生命周期内生效?这适用于所有传输方法(例如长轮询)吗?
    4. 是否有一个钩子来获取create / destroy的事件?我查看了AtmosphereInterceptor,但只能看到inspectpostInspect个事件。
    5. 我的问题有更好的解决方案吗?

1 个答案:

答案 0 :(得分:2)

我最终使用AtmosphereResourceEventListener来解决我的问题,该AtmosphereResource会根据{{1}}创建并销毁会话。

我很惊讶其他人没有遇到这个问题,想要每个客户端连接会话似乎是一个非常正常的要求。

如果有人对我的解决方案感兴趣,一些有趣的课程是: