我需要针对暂停的请求存储一些服务器端值,但不确定如何处理。我希望在挂起的连接不再存在于客户端上时清理属性。我希望AtmosphereResource具有setAttribute(name,value)getAttribute(name)方法,但是它们不存在。我想到了三种可能的方法:


使用AtmosphereResource.getRequest().setAttribute(name,value)
提供我自己的AtmosphereResource实现,并在其中添加方法(由并发映射支持)。
具有某种形式的侦听器/侦听器,用于侦听AtmosphereResource的创建/销毁并使用AtmosphereResource.uuid()维护我自己的服务器端状态。


问题:


使用已暂停请求的请求属性是否有问题?这适用于所有运输方式吗?
是否有提供自定义AtmosphereResource实现的示例?
如果我提供自己的AtmosphereResource实现,该实现在已暂停请求的生存期内是否有效?这适用于所有传输方式(例如长轮询)吗?
是否有钩子获取要创建/销毁的事件?我看过AtmosphereInterceptor,但只能看到inspectpostInspect事件。
我的问题有更好的解决方案吗?

最佳答案

我最终用AtmosphereResourceEventListener解决了我的问题,该AtmosphereResource创建并销毁了每个的会话。

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

如果有人对我的解决方案感兴趣,那么一些有趣的类是:


AtmosphereResourceEventListenerImpl.java
AtmosphereSessionManagerImpl.java
AtmosphereHandlerImpl.java

10-04 11:32