Java websocket在onOpen函数中获取自定义头
在我的websocket服务器中,我正在检索一个cutom头,我不想链接到它所在的会话。我已经得到了一个正在工作的Java websocket在onOpen函数中获取自定义头,java,websocket,Java,Websocket,在我的websocket服务器中,我正在检索一个cutom头,我不想链接到它所在的会话。我已经得到了一个正在工作的ServerEndpointConfig.Configurator,它看起来像这样: public class WebSocketConfig extends ServerEndpointConfig.Configurator { private static final Logger LOG = LoggerFactory.getLogger(WebSocketConfi
ServerEndpointConfig.Configurator
,它看起来像这样:
public class WebSocketConfig extends ServerEndpointConfig.Configurator {
private static final Logger LOG = LoggerFactory.getLogger(WebSocketConfig.class);
@Override
public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
Map<String, List<String>> headers = request.getHeaders();
if (headers != null) {
if (headers.containsKey("key")) {
List<String> header = headers.get("key");
if (header.size() > 0) {
LOG.info(header.get(0));
}
}
}
}
}
@ServerEndpoint(value = "/websocket", configurator = WebSocketConfig.class)
public class WebSocket {
private static final Logger LOG = LoggerFactory.getLogger(WebSocket.class);
public WebSocket() {
}
@OnOpen
public void onOpen(Session session) {
LOG.info("OnOpen");
}
@OnClose
public void onClose(Session session) {
LOG.info("OnClose");
}
@OnMessage
public void onMessage(String message, Session session){
LOG.info("OnMessage: " + message);
}
}
在函数onOpen
中,我想将会话链接保存到标题值。但是我怎样才能访问它呢
注意。我找到了解决问题的方法,必须在路径中添加路径参数 不确定这是否是最佳解决方案
@ServerEndpoint(value = "/websocket/{key}", configurator = WebSocketConfig.class)
public class WebSocket {
private static final Logger LOG = LoggerFactory.getLogger(WebSocket.class);
public WebSocket() {
}
@OnOpen
public void onOpen(Session session, @PathParam("key") String key) {
LOG.info("OnOpen");
}
@OnClose
public void onClose(Session session) {
LOG.info("OnClose");
}
@OnMessage
public void onMessage(String message, Session session){
LOG.info("OnMessage: " + message);
}
}
我找到了一个解决问题的方法,我必须在路径中添加路径参数 不确定这是否是最佳解决方案
@ServerEndpoint(value = "/websocket/{key}", configurator = WebSocketConfig.class)
public class WebSocket {
private static final Logger LOG = LoggerFactory.getLogger(WebSocket.class);
public WebSocket() {
}
@OnOpen
public void onOpen(Session session, @PathParam("key") String key) {
LOG.info("OnOpen");
}
@OnClose
public void onClose(Session session) {
LOG.info("OnClose");
}
@OnMessage
public void onMessage(String message, Session session){
LOG.info("OnMessage: " + message);
}
}