如何使用JEE7 Websockets将参数传递给@OnOpen方法,

2022-09-03 00:17:21

我有此代码

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


答案 2

推荐