Spring WebSocketSession ID在服务器和客户端之间不同
使用启动spring WebSocket服务器Spring WebSocketSession ID在服务器和客户端之间不同,websocket,spring-websocket,Websocket,Spring Websocket,使用启动spring WebSocket服务器 @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new WebSoc
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new WebSocketHandler() {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("SERVER Established " + session.getId());
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
System.out.println("SERVER Closed " + session.getId());
}
@Override
public boolean supportsPartialMessages() {
return false;
}
}, "/ws").setAllowedOrigins("*");
}
}
@Value("${server.port}")
int port;
@Test
public void test() throws InterruptedException, IOException, ExecutionException {
URI uri = UriComponentsBuilder
.fromUriString("ws://127.0.0.1:" + port + "/ws").buildAndExpand().encode().toUri();
WebSocketHttpHeaders headers = new WebSocketHttpHeaders();
WebSocketSession session = new StandardWebSocketClient()
.doHandshake(new WebSocketHandler() {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("CLIENT Established " + session.getId());
}
@Override
public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
}
@Override
public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus closeStatus) throws Exception {
System.out.println("CLIENT Closed " + session.getId());
}
@Override
public boolean supportsPartialMessages() {
return false;
}
}, headers, uri)
.get();
}
为什么ID不同
我想做的是
- 客户端:创建会话并获取会话ID
- 客户端:向任务服务器请求会话ID为的任务
- 服务器:侦听会话状态,然后如果
会话已关闭,则使用从1)
获取的会话ID向任务服务器请求任务取消3)
SERVER Established d1d1c7ba-eecc-1a42-ad1f-ff469a4ace94
CLIENT Established ca0d6a93-49eb-5022-630b-3a06afc25200
CLIENT Closed ca0d6a93-49eb-5022-630b-3a06afc25200
SERVER Closed d1d1c7ba-eecc-1a42-ad1f-ff469a4ace94