2019独角兽企业重金招聘Python工程师标准>>>
需要添加依赖:
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.3.1.RELEASE</version>
<type>pom</type>
</dependency>
新建interceptor类:
@Component
public class MyHandshakeInterceptor extends HttpSessionHandshakeInterceptor {
@Override
public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler handler,
Map map) throws Exception {
if (request instanceof ServletServerHttpRequest) {
ServletServerHttpRequest servletRequest = (ServletServerHttpRequest) request;
HttpSession session = servletRequest.getServletRequest().getSession(false);
if (session != null) {
System.out.println("ok");
// User u = (User) session.getAttribute("U");
// map.put("username", u.getName());
}
}
System.out.println("beforeHandshake");
return true;
}
@Override
public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler,
Exception ex) {
}
}
在config中配置interceptor对象:
@Configuration
@EnableScheduling
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractSessionWebSocketMessageBrokerConfigurer<ExpiringSession>{
@Override
public void configureStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/sockets").addInterceptors(new MyHandshakeInterceptor()).withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
}
新建SessionRepository实现类
public class MySessionBean implements SessionRepository<Session>{
@Override
public Session createSession() {
// TODO Auto-generated method stub
return null;
}
@Override
public void save(Session session) {
// TODO Auto-generated method stub
}
@Override
public Session getSession(String id) {
// TODO Auto-generated method stub
return null;
}
@Override
public void delete(String id) {
// TODO Auto-generated method stub
}
}
启动类中新增bean依赖:
@Bean
public MySessionBean mySessionBean(){
return new MySessionBean();
}
public static void main(String[] args) {
SpringApplication.run(SampleTomcatWebSocketApplication.class, args);
}