Как передать параметр методу @OnOpen с помощью веб-узлов JEE7,

У меня есть этот код

@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.
    }

}

Как получить параметры инициализации от клиента, открывающего сокет?

Ответ 1

Зависит от того, что вы подразумеваете под параметром инициализации. Вы можете сделать что-то вроде этого:

@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().