[ 
https://issues.apache.org/jira/browse/WICKET-6762?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Thomas Heigl updated WICKET-6762:
---------------------------------
    Description: 
{{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, 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.

  was:
{{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.


> 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
>            Priority: Major
>
> {{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, 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