Spring会话与hazelcast会话事件解雇

时间:2016-10-06 20:13:02

标签: spring hazelcast spring-websocket spring-session

我正在使用带有Hazelcast和Spring Websockets的Spring Session。由于我不需要clustarization,我使用了MapSessionRepository的hazelcast。但它不会在会话过期或会话删除时触发事件。我想要的是听SessionExpiredEvent,然后立即通过websocket断开用户。所以我有两个问题:

  1. MapSessionRepository不会触发所需的事件(SessionExpiredEvent等)。

  2. 我没有意识到如何使用过期的http会话发送websocket通知。我需要像simpMessageTemplate.convertAndSendToUser()这样的东西。 但我怎么能得到用户?

  3. 因此,我能看到的唯一一个变体就是在事件触发时为SessionRepository<ExpiringSession>编写自己的实现。我希望你理解我的问题。提前谢谢。

1 个答案:

答案 0 :(得分:2)

Spring Session Hazelcast支持确实提供了会话事件的发布。功能本身是使用all_tables实现的,因此请确保使用@EnableHazelcastHttpSession annotation配置Hazelcast集成的所有必要组件。

即将到来的春季会议1.3(目前位于SessionEntryListener)可能会为first-class Hazelcast support提供新的HazelcastSessionRepository(除其他外,还会替换{{}}。 1}})。