问题1:已连接就断开
解决:onOpen方法里出现了异常
问题2:连接类(有@ServerEndpoint的类)里注入service层,注入失败
解决:通过配置类注入连接类里的对象,对象要设置为static
@ServerEndpoint(value = "/webSocket/{token}")
@Component
@Slf4j
@EqualsAndHashCode
public class WebSocket {
public static Service SERVICE;
public static RestTemplate REST_TEMPLATE;
public static AuthProperties AUTH_PROPERTIES;
}
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
@Autowired
public void setService(Service service){
WebSocket.SERVICE= service;
}
@Autowired
public void setRestTemplate(RestTemplate restTemplate){
WebSocket.REST_TEMPLATE = restTemplate;
}
@Autowired
public void setAuthProperties(AuthProperties authProperties){
WebSocket.AUTH_PROPERTIES = authProperties;
}
}
问题3:登录拦截问题
解决:通过地址栏传入token,然后onOpen方法接收token,然后去校验token(可以试一下切面)
/**
* 连接建立成功调用的方法*/
@OnOpen
public void onOpen(@PathParam("token") String token, Session session) {
}