在WebSocketConfigurer中为Spring引导应用程序使用@PathParam(javax.websocket.server.PathParam)
我已经创建了一个spring引导应用程序,希望在其中使用Web套接字。当我在没有参数的情况下使用它时,它工作得很好。下面是没有参数的代码在WebSocketConfigurer中为Spring引导应用程序使用@PathParam(javax.websocket.server.PathParam),java,spring-boot,websocket,java-websocket,Java,Spring Boot,Websocket,Java Websocket,我已经创建了一个spring引导应用程序,希望在其中使用Web套接字。当我在没有参数的情况下使用它时,它工作得很好。下面是没有参数的代码 @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry regis
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new ABC(), "/getABC").setAllowedOrigins("*");
registry.addHandler(new XYZ(), "/getXYZ").setAllowedOrigins("*");
}
}
但是现在我需要使用@PathParam向它传递一个参数。我无法在这种配置中使用它,例如
registry.addHandler(new XYZ(), "/getXYZ{someId}").setAllowedOrigins("*");
我的处理程序代码:
public class XYZ extends TextWebSocketHandler {
static List<WebSocketSession> sessions = new CopyOnWriteArrayList<>();
String someId;
public XYZ() {
}
public XYZ(@PathParam(value = "someId") String someId) {
this.someId= someId;
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
// the messages will be broadcasted to all users.
sessions.add(session);
}
}
公共类XYZ扩展了TextWebSocketHandler{
静态列表会话=新建CopyOnWriteArrayList();
字符串someId;
公共XYZ(){
}
公共XYZ(@PathParam(value=“someId”)字符串someId){
this.someId=someId;
}
@凌驾
建立连接后公共无效(WebSocketSession会话)引发异常{
//这些信息将广播给所有用户。
添加(会话);
}
}
我认为语法有问题,请尝试使用
public XYZ(@PathParam("someId") String someId)
此构造函数已存在于处理程序中。在spring引导的情况下,如何从WebSocketConfig传递此消息是一个问题。当我们使用@ServerEndpoint注册处理程序时,这将很好地工作。您找到解决方案了吗?我被困在同一点上。