亲爱的,我正在尝试在我的 WebSocketHandler 中获取 HTTPSession。当我使用“javax.websocket-api”时我可以成功完成此操作,但我现在使用“Spring-Websocket”。
配置:
@ConditionalOnWebApplication
@Configuration
@EnableWebSocket
public class WebSocketConfigurator implements WebSocketConfigurer {
@Autowired
private ApplicationContext context;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
MyEndpoint endpoint = context.getBean(MyEndpoint.class);
registry.addHandler(endpoint, "/signaling");
}
}
Run Code Online (Sandbox Code Playgroud)
当连接建立时:
@Component
public class MyEndpoint implements WebSocketHandler {
private WebSocketSession wsSession;
@Override
public void afterConnectionEstablished(WebSocketSession webSocketSession) throws Exception {
this.wsSession = webSocketSession;
// need to get the HTTP SESSION HERE
log.info("Opening: " + webSocketSession.getId());
}
}
Run Code Online (Sandbox Code Playgroud)
现在这是我如何使用 'javax.websocket-api' 执行此操作的示例:
配置:
@ServerEndpoint(value = "/signaling", //
decoders = MessageDecoder.class, // …Run Code Online (Sandbox Code Playgroud)