2017-01-23 209 views
0

我已经创建了一个我希望使用Web套接字的弹簧引导应用程序。当我没有参数使用它时,它的工作正常。下面是没有参数的代码在WebSocketConfigurer中使用@PathParam(javax.websocket.server.PathParam)用于Spring Boot应用程序

@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); 
     } 
    } 

谁能帮助?

+0

你找到一个解决方案?我被困在同一点。 –

回答

1

我认为有一些问题的语法,请尝试使用

public XYZ(@PathParam("someId") String someId) 
+0

该构造函数已经存在于处理程序中。如何通过WebSocketConfig传递这个问题是Spring引导的问题。当我们使用@ServerEndpoint来注册处理程序时,这会很好地工作。 – debD

相关问题