我需要针对暂停的请求存储一些服务器端值,但不确定如何处理。我希望在挂起的连接不再存在于客户端上时清理属性。我希望AtmosphereResource
具有setAttribute(name,value)
和getAttribute(name)
方法,但是它们不存在。我想到了三种可能的方法:
使用AtmosphereResource.getRequest().setAttribute(name,value)
提供我自己的AtmosphereResource
实现,并在其中添加方法(由并发映射支持)。
具有某种形式的侦听器/侦听器,用于侦听AtmosphereResource的创建/销毁并使用AtmosphereResource.uuid()
维护我自己的服务器端状态。
问题:
使用已暂停请求的请求属性是否有问题?这适用于所有运输方式吗?
是否有提供自定义AtmosphereResource
实现的示例?
如果我提供自己的AtmosphereResource
实现,该实现在已暂停请求的生存期内是否有效?这适用于所有传输方式(例如长轮询)吗?
是否有钩子获取要创建/销毁的事件?我看过AtmosphereInterceptor
,但只能看到inspect
和postInspect
事件。
我的问题有更好的解决方案吗?
最佳答案
我最终用AtmosphereResourceEventListener
解决了我的问题,该AtmosphereResource
创建并销毁了每个的会话。
我很惊讶其他人没有这个问题,这似乎是一个很正常的要求,即每个客户端连接都需要一个会话。
如果有人对我的解决方案感兴趣,那么一些有趣的类是:
AtmosphereResourceEventListenerImpl.java
AtmosphereSessionManagerImpl.java
AtmosphereHandlerImpl.java