我正在使用带有Hazelcast和Spring Websockets的Spring Session。由于我不需要clustarization,我使用了MapSessionRepository
的hazelcast。但它不会在会话过期或会话删除时触发事件。我想要的是听SessionExpiredEvent
,然后立即通过websocket断开用户。所以我有两个问题:
MapSessionRepository
不会触发所需的事件(SessionExpiredEvent
等)。
我没有意识到如何使用过期的http会话发送websocket通知。我需要像simpMessageTemplate.convertAndSendToUser()
这样的东西。
但我怎么能得到用户?
因此,我能看到的唯一一个变体就是在事件触发时为SessionRepository<ExpiringSession>
编写自己的实现。我希望你理解我的问题。提前谢谢。
答案 0 :(得分:2)
Spring Session Hazelcast支持确实提供了会话事件的发布。功能本身是使用all_tables
实现的,因此请确保使用@EnableHazelcastHttpSession
annotation配置Hazelcast集成的所有必要组件。
即将到来的春季会议1.3(目前位于SessionEntryListener
)可能会为first-class Hazelcast support提供新的HazelcastSessionRepository
(除其他外,还会替换{{}}。 1}})。