Use the UA string from websocket upgrade requests if available.

This commit is contained in:
Jon Chambers
2020-06-11 14:03:05 -04:00
committed by Jon Chambers
parent 7454e55693
commit bbf5e1fa78
2 changed files with 65 additions and 0 deletions

View File

@@ -71,6 +71,7 @@ public class WebSocketResourceProvider<T extends Principal> implements WebSocket
private Session session;
private RemoteEndpoint remoteEndpoint;
private WebSocketSessionContext context;
private String userAgent;
public WebSocketResourceProvider(String remoteAddress,
ApplicationHandler jerseyHandler,
@@ -92,6 +93,7 @@ public class WebSocketResourceProvider<T extends Principal> implements WebSocket
@Override
public void onWebSocketConnect(Session session) {
this.session = session;
this.userAgent = session.getUpgradeRequest().getHeader("User-Agent");
this.remoteEndpoint = session.getRemote();
this.context = new WebSocketSessionContext(new WebSocketClient(session, remoteEndpoint, messageFactory, requestMap));
this.context.setAuthenticated(authenticated);
@@ -157,6 +159,12 @@ public class WebSocketResourceProvider<T extends Principal> implements WebSocket
containerRequest.header(entry.getKey(), entry.getValue());
}
final List<String> requestUserAgentHeader = containerRequest.getRequestHeader("User-Agent");
if ((requestUserAgentHeader == null || requestUserAgentHeader.isEmpty()) && userAgent != null) {
containerRequest.header("User-Agent", userAgent);
}
if (requestMessage.getBody().isPresent()) {
containerRequest.setEntityStream(new ByteArrayInputStream(requestMessage.getBody().get()));
}