2017-01-23 204 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

相關問題