【发布时间】:2016-06-08 01:36:11
【问题描述】:
在服务器应用程序中,我使用 裸 websockets,而没有 spring消息传递层和 sockjs/stomp。我需要我自己的消息层在上面,但我想使用例如 spring 会话来利用 servlet HttpSession 替换来保持 websocket 会话下方的 http 会话处于活动状态,以防止超时。 websocket 是使用 JavaScript 从静态 HTML 页面打开的。
在spring-framework documentation 中有所有必要的信息来设置裸 websocket 支持,例如一个基本的 BinaryWebSocketHandler 或 TextWebSocketHandler 以及如何 提供您自己的 HandshakeInterceptor。
我添加了带有 hazelcast 的 spring session 1.1.0.RC1,用于存储会话并用 spring 会话提供的 Session/ExpiringSession 替换 servlet 容器 HttpSession 实现。我只是按照给定的说明执行此操作。
到目前为止一切都很好,但是由于我正在提供一个静态 HTML 页面,因此我使用 JavaScript 打开 websocket 而不使用 spring security 或任何其他机制触发 servlet 容器的处理,到目前为止还没有初始化 http 会话。
所以问题是:如何初始化自定义 HttpSession,然后将其存储在 Spring 会话提供的 SessionRepository 中?
注意:我会自己提供一个答案,因为我认为我解决了我的案例的问题,并且可能对面临类似问题的其他人有所帮助。
【问题讨论】:
标签: java spring session websocket