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)

Reply via email to