Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

Questo bugfix ha lo scopo di adattare AgentDesktop/CTToolbar7 e di CTPhone7 per mitigare gli effetti della tecnica di Timer Throttling che Chrome ha adottato negli ultimi aggiornamenti.

Questa tecnica anche se ideata per un risparmio energetico può andare ad inficiare tutti quei processi automatici e periodici di rinnovo della sessione tra client (browser) e server.

 Articolo e spiegazioni qui:

https://www.tomshw.it/hardware/google-chrome-si-prepara-a-ridurre-luso-della-batteria/

https://developer.chrome.com/blog/timer-throttling-in-chrome-88/

 Al fine di non farci  invalidare le sessioni abbiamo capito che la comunicazione WebSocket dovrebbe essere sempre “risvegliata” sul client se è la controparte server che invia un messaggio, non il contrario.

Per questo motivo abbiamo modificato CTPhone7 al fine di considerare come invalida  la connessione verso la Toolbar non alla prima KeepAlive mancata ma bensì dopo il fallito tentativo di attuare una procedura di recovery specifica che abbiamo inserito in questa  ultima versione.

In caso contrario se è il client che invia dei messaggi sulla base di Timer Javascript  allora dopo 5 minuti di inattività Chrome dovrebbe parcellizzare i timer ogni minuto (questa era lo scenario attivo fino ad oggi).

Versioni impattate

Il problema si manifesta:

  • utilizzando AgentDesktop o toolbar con la tipologia di media CTPhone7.

  • CTView

 Cosa si intende per inattività di Chrome?

Anche Google non è chiara a tal riguardo. Semplicemente sembrerebbe che si considera la pagina aperta in Google come inattivita quando la proprietà “visibility” cambia da true a false.

E' possibile simulare il Throttling semplicemente aprendo la Toolbar con CTPhone7 su di un Tab, spostando il focus su di un secondo Tab dove si apre un sito a piacere e minimizzando il browser per 5 min.

E’ inoltre possibile andare sulle impostazioni di Chrome (chrome://flags) e controllare la modalità di Throttling con il seguente parametro:

 

Elenco modifiche a CTPhone7

  • Il timeout sulla KeepAlive da Toolbar è stato portato da 60 sec a 65 sec.

  • Se il timeout dovesse scattare dopo 65 secondi, l’interno non viene subito rimosso ma  viene eseguita una procedura di recovery descritta di seguito:

    • Vengono eseguiti 3 tentativi di invio di un nuovo messaggio sulla WebSocket di “KeepAlive_Ping”. Ogni tentativo è distanziato dal successivo di 5 sec.

    • La Toolbar una volta che riceve questo messaggio dovrebbe rispondere con un KeepAlive classico per far ritornare la comunicazione in condizioni di normalità e risvegliare la Socket.

    • Se la Toolbar non risponde a seguito di 3 invii allora CTPhone7 considera la sessione come persa e l’interno viene rimosso e deregistrato.

 

Di seguito la sequenza di quello che appare nei log di CTPhone7 in caso di procedura di recovery fallita dopo il terzo tentativo:

2021-03-22 18:39:38.9912 - [INFO] [KEEPALIVE] Elapsed Max Waiting Time on KeepAlive Connection [541de7d3-6a56-4ac6-98f2-31d0946663ae]

2021-03-22 18:39:39.0012 - [INFO] [KEEPALIVE] At least one connection is alive [541de7d3-6a56-4ac6-98f2-31d0946663ae] Open [True] KeepAlive [False]

2021-03-22 18:39:39.0012 - [INFO] [KEEPALIVE] Missing KeepAlive from Toolbar. Send message #1 to wake up WebSocket javascript connection.

2021-03-22 18:39:39.0211 - [INFO] [WEBSOCKET] [SND] [{"command": "KeepAlive_Ping", "response": ""}]

2021-03-22 18:39:44.0340 - [INFO] [KEEPALIVE] Missing KeepAlive from Toolbar. Send message #2 to wake up WebSocket javascript connection.

2021-03-22 18:39:44.0440 - [INFO] [WEBSOCKET] [SND] [{"command": "KeepAlive_Ping", "response": ""}]

2021-03-22 18:39:49.0647 - [INFO] [KEEPALIVE] Missing KeepAlive from Toolbar. Send message #3 to wake up WebSocket javascript connection.

2021-03-22 18:39:49.0647 - [INFO] [WEBSOCKET] [SND] [{"command": "KeepAlive_Ping", "response": ""}]

2021-03-22 18:39:54.0945 - [INFO] [KEEPALIVE] Destroy SIP Account due to elapsed KeepAlive Ping timer on all connections

2021-03-22 18:39:54.0945 - [INFO] [JAVASCRIPT] Invoke Javascript statement in PluginSIP module [destroyAccount();]

2021-03-22 18:39:54.1134 - [INFO] [CTPHONE7|PLUGINSIP] Received Command [destroyAccount]

2021-03-22 18:39:54.1134 - [INFO] [CTPHONE7|PLUGINSIP] [UNREGISTER]

2021-03-22 18:39:54.3219 - [INFO] [CTPHONE7|PLUGINSIP] Distruzione della pagina web del modulo PluginSIP [about:blank]

 

 

Elenco modifiche ad AgentDesktop:

  • Alla ricezione del nuovo messaggio da parte di CTPhone7 “KeepAlive_Ping” viene risposto con una KeepAlive.

Rilasci

  • AgentDesktop v. 1.4.10871

  • CTPhone7 v. 1.24

  • CTView v. 1.0.50

  • No labels