gpt4 book ai didi

Java websocket在onOpen函数中获取自定义 header

转载 作者:太空宇宙 更新时间:2023-11-04 13:15:34 40 4
gpt4 key购买 nike

在我的 websocket 服务器中,我正在检索一个自定义 header ,我不想链接到它所在的 session 。我已经得到了一个有效的 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看起来像这样:

@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中,我想将 session 链接保存到 header 值。但我怎样才能访问它呢?

问候。

最佳答案

我找到了解决问题的方法,我必须将路径参数添加到路径中。

不确定这是否是最佳解决方案。

@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);
}
}

关于Java websocket在onOpen函数中获取自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569607/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com