Thomas Heigl created WICKET-6762:
------------------------------------
Summary: Support manual initialization of websocket connections
Key: WICKET-6762
URL: https://issues.apache.org/jira/browse/WICKET-6762
Project: Wicket
Issue Type: Improvement
Components: wicket-native-websocket
Affects Versions: 8.7.0
Reporter: Thomas Heigl
Assignee: Martin Tzvetanov Grigorov
{{BaseWebSocketBehavior}} currently calls
{{Wicket.WebSocket.createDefaultConnection()}} on DOM ready. I would like to be
able to delay connection creation and trigger it myself.
Desktop users of our application tend to open quite a number of tabs from
search result pages and other lists and Wicket creates a new websocket
connection for all tabs opened in the background.
I implemented a solution that uses the Page Visibility API to open and close
websocket connections when a page becomes visible or hidden. Since I currently
cannot disable the default connection event, I'm closing the connection
immediately:
{code:java}
if (document.hidden) {
if (Wicket.WebSocket.INSTANCE) {
Wicket.WebSocket.INSTANCE.close();
}
}
var connectFunction = function () {
if (document.hidden) {
if (Wicket.WebSocket.INSTANCE) {
Wicket.WebSocket.INSTANCE.close();
}
} else {
if (!Wicket.WebSocket.INSTANCE) {
Wicket.WebSocket.createDefaultConnection();
}
}
};
document.addEventListener('visibilitychange', connectFunction, false);
{code}
This works, but most browsers log an error like this:
{code:java}
Connection failed. WebSocket is closed before the connection is established.
{code}
A configuration option to disable automatic connection creation would solve
this.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)