diff --git a/modules/cpr/src/main/java/org/atmosphere/container/JSR356Endpoint.java b/modules/cpr/src/main/java/org/atmosphere/container/JSR356Endpoint.java index f716935c1ef..22599756138 100644 --- a/modules/cpr/src/main/java/org/atmosphere/container/JSR356Endpoint.java +++ b/modules/cpr/src/main/java/org/atmosphere/container/JSR356Endpoint.java @@ -137,10 +137,18 @@ public void onOpen(Session session, EndpointConfig endpointConfig) { } try { - String requestUri = session.getRequestURI().toASCIIString(); + String requestUri = uri.toASCIIString(); if (requestUri.contains("?")) { requestUri = requestUri.substring(0, requestUri.indexOf("?")); } + + // https://issues.apache.org/bugzilla/show_bug.cgi?id=56573 + // https://java.net/jira/browse/WEBSOCKET_SPEC-228 + if (!requestUri.startsWith("ws://")) { + String protocol = session.isSecure() ? "wss://" : "ws://"; + requestUri = new StringBuilder(protocol).append("127.0.0.1:8080").append(requestUri).toString(); + } + request = new AtmosphereRequest.Builder() .requestURI(requestUri) .requestURL(requestUri)