web-dev-qa-db-ja.com

JEE7Websocketを使用して@OnOpenメソッドにパラメーターを渡すにはどうすればよいですか。

私はこのコードを持っています

@ServerEndpoint(value = "/websocket")
public class Service {
    private String clientId; 
    @OnOpen
    public void init(Session session) throws IOException {
         //opening a websocket
         // get clientId
         clientId = // Code here to get initialization parameter.
    }

}

ソケットを開いているクライアントから初期化パラメータを取得するにはどうすればよいですか?.

15
Leo

初期化パラメータの意味によって異なります。あなたはこのようなことをすることができます:

_@ServerEndpoint(value = "/websocket/{clientId}")
public class Service {
    private volatile String clientId; 
    @OnOpen
    public void init(@PathParam("clientId") String clientId, Session session) throws IOException {
         this.clientId = clientId;
    }
}
_

次に、エンドポイントにアクセスするために次のURLを使用する必要があります:_ws://Host/contextPath/websocket/[clientId]_。

クエリパラメータを使用する場合は、Session#getQueryString()を参照してください。

26
Pavel Bucek