You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2017/05/30 20:49:16 UTC
wicket git commit: WICKET-6385 Allow using custom port for web socket
connections
Repository: wicket
Updated Branches:
refs/heads/wicket-7.x 6963c723f -> 4dc6e7eca
WICKET-6385 Allow using custom port for web socket connections
(cherry picked from commit 36c3eb49174596b3a3306059049412c28369c30a)
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/4dc6e7ec
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/4dc6e7ec
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/4dc6e7ec
Branch: refs/heads/wicket-7.x
Commit: 4dc6e7eca5cf4849346bbf20b59f1f5d2de6512a
Parents: 6963c72
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue May 30 22:46:17 2017 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue May 30 22:48:39 2017 +0200
----------------------------------------------------------------------
.../wicket/protocol/ws/WebSocketSettings.java | 42 +++++++++++++++++++-
.../protocol/ws/api/BaseWebSocketBehavior.java | 15 +++++++
.../ws/api/res/js/wicket-websocket-jquery.js | 12 +++++-
.../api/res/js/wicket-websocket-setup.js.tmpl | 2 +-
.../ws/javax/app/JSR356Application.java | 10 +++++
5 files changed, 77 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/4dc6e7ec/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java
index ee0e65b..77c3222 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/WebSocketSettings.java
@@ -39,7 +39,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
-import java.util.concurrent.Callable;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
/**
@@ -79,6 +79,8 @@ public class WebSocketSettings
private final AtomicReference<CharSequence> filterPrefix = new AtomicReference<>();
private final AtomicReference<CharSequence> contextPath = new AtomicReference<>();
private final AtomicReference<CharSequence> baseUrl = new AtomicReference<>();
+ private final AtomicInteger port = new AtomicInteger();
+ private final AtomicInteger securePort = new AtomicInteger();
/**
* Holds this WebSocketSettings in the Application's metadata.
@@ -311,6 +313,44 @@ public class WebSocketSettings
}
/**
+ * Sets the port that should be used for <code>ws:</code> connections.
+ * If unset then the current HTTP port will be used.
+ *
+ * @param wsPort The custom port for WS connections
+ */
+ public void setPort(int wsPort)
+ {
+ this.port.set(wsPort);
+ }
+
+ /**
+ * @return The custom port for WS connections
+ */
+ public Integer getPort()
+ {
+ return port.get();
+ }
+
+ /**
+ * Sets the port that should be used for <code>wss:</code> connections.
+ * If unset then the current HTTPS port will be used.
+ *
+ * @param wssPort The custom port for WSS connections
+ */
+ public void setSecurePort(int wssPort)
+ {
+ this.securePort.set(wssPort);
+ }
+
+ /**
+ * @return The custom port for WSS connections
+ */
+ public Integer getSecurePort()
+ {
+ return securePort.get();
+ }
+
+ /**
* Simple executor that runs the tasks in the caller thread.
*/
public static class SameThreadExecutor implements Executor
http://git-wip-us.apache.org/repos/asf/wicket/blob/4dc6e7ec/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java
index 7d1219f..f6d1f28 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/BaseWebSocketBehavior.java
@@ -100,6 +100,11 @@ public class BaseWebSocketBehavior extends Behavior
Args.notNull(baseUrl, "baseUrl");
variables.put("baseUrl", baseUrl);
+ Integer port = getPort(webSocketSettings);
+ variables.put("port", port);
+ Integer securePort = getSecurePort(webSocketSettings);
+ variables.put("securePort", securePort);
+
CharSequence contextPath = getContextPath(webSocketSettings);
Args.notNull(contextPath, "contextPath");
variables.put("contextPath", contextPath);
@@ -116,6 +121,16 @@ public class BaseWebSocketBehavior extends Behavior
response.render(OnDomReadyHeaderItem.forScript(webSocketSetupScript));
}
+ protected Integer getPort(WebSocketSettings webSocketSettings)
+ {
+ return webSocketSettings.getPort();
+ }
+
+ protected Integer getSecurePort(WebSocketSettings webSocketSettings)
+ {
+ return webSocketSettings.getSecurePort();
+ }
+
protected CharSequence getFilterPrefix(final WebSocketSettings webSocketSettings) {
return webSocketSettings.getFilterPrefix();
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/4dc6e7ec/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js
index 57cc1ad..d8062c2 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-jquery.js
@@ -50,13 +50,21 @@
var self = this,
url,
protocol,
- WWS = Wicket.WebSocket;
+ WWS = Wicket.WebSocket,
+ port = WWS.port || document.location.port,
+ securePort = WWS.securePort || document.location.port,
+ _port;
protocol = document.location.protocol
.replace('https:', 'wss:')
.replace('http:', 'ws:');
- url = protocol + '//' + document.location.host + WWS.contextPath + WWS.filterPrefix + '/wicket/websocket';
+ if ('wss:' === protocol) {
+ _port = securePort ? ":" + securePort : '';
+ } else {
+ _port = port ? ":" + port : '';
+ }
+ url = protocol + '//' + document.location.hostname + _port + WWS.contextPath + WWS.filterPrefix + '/wicket/websocket';
if (WWS.pageId !== false) {
url += '?pageId=' + encodeURIComponent(WWS.pageId);
http://git-wip-us.apache.org/repos/asf/wicket/blob/4dc6e7ec/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl
index 42c9693..7b7fdb7 100644
--- a/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl
+++ b/wicket-native-websocket/wicket-native-websocket-core/src/main/java/org/apache/wicket/protocol/ws/api/res/js/wicket-websocket-setup.js.tmpl
@@ -4,7 +4,7 @@
if (typeof(Wicket.WebSocket.appName) === "undefined") {
jQuery.extend(Wicket.WebSocket, { pageId: ${pageId}, resourceName: '${resourceName}',
baseUrl: '${baseUrl}', contextPath: '${contextPath}', appName: '${applicationName}',
- filterPrefix: '${filterPrefix}' });
+ port: ${port}, securePort: ${securePort}, filterPrefix: '${filterPrefix}'});
Wicket.WebSocket.createDefaultConnection();
}
})();
http://git-wip-us.apache.org/repos/asf/wicket/blob/4dc6e7ec/wicket-native-websocket/wicket-native-websocket-javax/src/test/java/org/apache/wicket/protocol/ws/javax/app/JSR356Application.java
----------------------------------------------------------------------
diff --git a/wicket-native-websocket/wicket-native-websocket-javax/src/test/java/org/apache/wicket/protocol/ws/javax/app/JSR356Application.java b/wicket-native-websocket/wicket-native-websocket-javax/src/test/java/org/apache/wicket/protocol/ws/javax/app/JSR356Application.java
index 9cef063..82e1a82 100644
--- a/wicket-native-websocket/wicket-native-websocket-javax/src/test/java/org/apache/wicket/protocol/ws/javax/app/JSR356Application.java
+++ b/wicket-native-websocket/wicket-native-websocket-javax/src/test/java/org/apache/wicket/protocol/ws/javax/app/JSR356Application.java
@@ -20,6 +20,7 @@ import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.https.HttpsConfig;
import org.apache.wicket.protocol.https.HttpsMapper;
import org.apache.wicket.protocol.ws.javax.app.charts.ChartWebSocketResource;
+import org.apache.wicket.protocol.ws.WebSocketSettings;
/**
* Application object for your web application. If you want to run this application without deploying, run the Start class.
@@ -51,5 +52,14 @@ public class JSR356Application extends WebApplication
setRootRequestMapper(new HttpsMapper(getRootRequestMapper(), new HttpsConfig()));
getSharedResources().add(ChartWebSocketResource.NAME, new ChartWebSocketResource());
+
+ if (System.getenv("OPENSHIFT_APP_NAME") != null)
+ {
+ // OpenShift uses special proxy for WebSocket connections
+ // https://blog.openshift.com/paas-websockets/
+ final WebSocketSettings webSocketSettings = WebSocketSettings.Holder.get(this);
+ webSocketSettings.setPort(8000);
+ webSocketSettings.setSecurePort(8443);
+ }
}
}