You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Thomas Heigl (Jira)" <ji...@apache.org> on 2020/03/25 16:15:00 UTC
[jira] [Created] (WICKET-6762) Support manual initialization of
websocket connections
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)