registry.addHandler(webSocketHandler(), "/websocket/id}").setAllowedOrigins("*"); 怎么让id 为动态值
时间: 2024-04-22 15:24:39 浏览: 214
如果你想让 WebSocket 的路径中的 `id` 值为动态值,你可以在 `@RequestMapping` 注解中使用占位符 `{}` 来表示路径中的动态部分。然后,在 `addHandler()` 方法中使用 `@PathVariable` 注解来获取动态值。以下是一个示例:
```java
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(webSocketHandler(), "/websocket/{id}")
.setAllowedOrigins("*");
}
@Bean
public WebSocketHandler webSocketHandler() {
return new YourWebSocketHandler();
}
}
```
在上面的示例中,WebSocket 的路径为 `/websocket/{id}`,`{id}` 是一个占位符,表示动态的值。你可以根据实际情况调整占位符的名称。
然后,在你的 `YourWebSocketHandler` 类中,可以使用 `@PathVariable` 注解来获取路径中的动态值。示例如下:
```java
@Component
public class YourWebSocketHandler extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
Map<String, String> pathVariables = (Map<String, String>) session.getAttributes().get(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
String id = pathVariables.get("id");
// 使用动态的 id 值进行处理
}
// 其他 WebSocket 处理逻辑
}
```
在上面的示例中,我们使用 `session.getAttributes().get(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE)` 来获取路径中的动态值,并将其存储在 `pathVariables` 变量中。然后,你可以使用 `pathVariables` 获取到的动态值进行后续处理。
这样,你就可以将 WebSocket 的路径中的 `id` 值作为动态值进行处理了。
阅读全文