2017-01-23 19 views
0

Webソケットを使用するスプリングブートアプリケーションを作成しました。私はパラメータなしでそれを使用しているときにうまく動作します。以下はパラメータのないコードですWebSocketConfigurerの@PathParam(javax.websocket.server.PathParam)をSpringブートアプリケーションのために使用する

@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からこれを渡す方法は、春のブートの場合の質問です。 Handlerを登録するために@ServerEndpointを使用すると、これはうまく動作します。 – debD

関連する問題