Idle NG Clients don't always terminate

On the servoy-admin/clients page I often see stale clients, ie ones that are inactive but haven’t closed. All clients have maxIdleTime set to 1800000 (30 minutes) with

plugins.svyIdle.onIdle(onIdle,null,null,null,null,1800000,true,false,false);
function onIdle(){
	var currentUserName = security.getUserName();
	if(currentUserName && application.getApplicationType() != APPLICATION_TYPES.HEADLESS_CLIENT)
	{
		globals.LogActivity("Logging out " + currentUserName );
		application.exit(); 
	} 
}

This is on Servoy LTS version 2022.3.4 -releaseNumber 3746

EG at time 06:53 on Fri Mar 17 I can see an NG client that hasn’t been accessed for 12 hours, has been idle for nearly 4 hours, last ping 17 minutes ago.
Client connected since: Thu Mar 16 17:25:40 AEDT 2023
Client idle since: Fri Mar 17 03:10:21 AEDT 2023
Client status: Websocket connected, last ping time: Fri 06:36:09
Last accessed time: Thu Mar 16 19:23:28 AEDT 2023

FWIW useragent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.3 Safari/605.1.15
but we have lots of Mac users so not sure if it’s related.

Any suggestions?

Here’s another example, client connected for 25 minutes yesterday, session still connected 9 hours later,

Client connected since: Fri Mar 17 19:04:56 AEDT 2023
Client idle since: Fri Mar 17 20:17:58 AEDT 2023
Client status: Websocket connected, last ping time: Sat 04:47:10
Last accessed time: Fri Mar 17 19:29:10 AEDT 2023

Different browser but also Mac
useragent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36

Any thoughts or suggestions?