问题描述
此问题演变为从 Java EE Websocket 连接检索授权标头。我有一个半工作版本,它使用 ServletAwareConfigurator.modifyHandshake 类在连接升级到 websocket 之前获取标头。这是一个例子
public class ServletAwareConfigurator extends Configurator {
@Override
public void modifyHandshake(ServerEndpointConfig config,HandshakeRequest request,HandshakeResponse response) {
config.getUserProperties().put("authorization",(String)request.getHeaders().get("authorization").get(0));
}
}
然后,为了从该配置类中检索标头,我在 Onopen Websocket 端点中使用了类似的内容。
@ServerEndpoint(value ="/engage_wss",configurator = ServletAwareConfigurator.class)
public class Websocket {
@Onopen
public void onopen(Session session,EndpointConfig config) throws InterruptedException,IOException,sqlException,IllegalObjectTypeException,ObjectDoesNotExistException,ErrorCompletingRequestException,AS400SecurityException {
String authorization = config.getUserProperties().get("authorization").toString();
//do stuff with this authorization
}
}
如果我有一个 websocket 连接尝试一次建立连接,这很好用。 问题是当两个 websockets 尝试同时连接时。授权标头之一将被复制。这是因为 ServletAwareConfigurator.class 不是唯一的,而是跨实例共享的。有没有办法解决这个问题?像强制 servlet Config 类是唯一的?
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)